Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как отличить говнокод

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Критерии определения говнокода и как с этим боротся?
jenya777777
Отправлено: 07 Июля, 2010 - 15:09:12
Post Id


Новичок


Покинул форум
Сообщений всего: 18
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




Часто вижу на форумах такое, что кто то задает вопрос и тут же ответ, да у тебя говнокод, иди читай книжки хорошие. Хотелось бы узнать критерии говнокода и как с этим бороться? Понимаю, что можно прочитать книжку, но в большинстве случаев, примеры то и пишутся с книг.
 
 Top
Ch_chov
Отправлено: 07 Июля, 2010 - 15:22:58
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Г-код, — это код сделанный по принципу «лишь бы работало».
Чётких критериев нет. Если программированием занимаешься достаточно долго, открой исходники своих первых проектов.
Думаю там найдется много такого «добра». Радость

(Отредактировано автором: 07 Июля, 2010 - 15:23:27)

 
 Top
Uchkuma
Отправлено: 07 Июля, 2010 - 15:30:30
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




jenya777777 пишет:
как с этим бороться?
- практика, опыт и еще раз практика. Ну и здравый смысл еще никто не отменял.
 
 Top
JustUserR
Отправлено: 07 Июля, 2010 - 15:39:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




jenya777777 Если не брать во внимание код который написан в совершенно-непонятном стиле с потенциальными уязвимостями и проблемами - то вопрос скорее относится к технологиям программирования о чем можно почитать в этой книге http://piter[dot]com/book[dot]phtml?978591180603 - или хотя бы этой статье http://www[dot]xakep[dot]ru/post/46172/?page=5


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Uchkuma
Отправлено: 07 Июля, 2010 - 15:49:25
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




JustUserR пишет:
Если не брать во внимание код который написан в совершенно-непонятном стиле с потенциальными уязвимостями и проблемами
Новичку в этом не разобраться Улыбка
Думаю, да. Если ты сам не понимаешь, что именно делает тот или иной код, то тебе не отличить говнокод от нормального кода. Порой даже опытный кодер не всегда может оптимальное решение найти, но, по крайней мере, очевидные вещи он не пропустит.
 
 Top
ZeiZ
Отправлено: 07 Июля, 2010 - 16:54:17
Post Id



Частый гость


Покинул форум
Сообщений всего: 231
Дата рег-ции: Нояб. 2009  
Откуда: Москва


Помог: 0 раз(а)




очень нравятся: Радость :
PHP:
скопировать код в буфер обмена
  1. if ($_POST["end_oplata"]!="sending" and $_POST["continue_oplata"]!="prodoljit" and $_POST["prov"]!="proverka") {
  2. ...
  3. }
  4. elseif ($_POST["continue_oplata"]!="prodoljit" and $_POST["prov"]!="proverka") {
  5. ...
  6. }
  7. elseif ($_POST["continue_oplata"]=="prodoljit") {
  8. ...
  9. }


или

PHP:
скопировать код в буфер обмена
  1. if (i == 0 || i == 1 || i == 2 || i == 3 || i == 4 || i == 5 || i == 6 || i == 7 || i == 8 || i == 9)
  2. {
  3. ...
  4. }
 
 Top
Champion Супермодератор
Отправлено: 07 Июля, 2010 - 18:13:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Книжки от говнокода не спасают. От него спасает опыт и своя голова.
А признаки у него такие: невнятные названия переменных, функций и пр., причудливое расположение отступов и скобок, отстутсвие нужных комментариев и присутствие глупых и не нужных. Это что касается стиля.
Теперь логика. Такие вещи как фильтрация результатов SQL запросв на php в цикле, выполнение запросов в цикле, когда есть возможность выполнить запрос один раз, а в цикле работать с результатом. Неуместное использование каких-то ресурсоемких инструкций/библиотек. Такие вот чудеса как ZeiZ привел.... вот.
 
 Top
antzol
Отправлено: 07 Июля, 2010 - 21:25:30
Post Id



Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Апр. 2008  


Помог: 0 раз(а)




Блин... Как раз сегодня бурно обсуждал один экземпляр говнокода, правда, сишный. А у написателя (язык не поворачивается, назвать программистом) этого кода практики достаточно. Нахмурился
Поэтому всё-таки основное, что требуется от человека, - это желание сделать правильно и красиво, а не "лишь бы работало". А отсюда появятся и чтение книг и исходников, и переписывание своих программ с целью оптимизации.
Ну а признаки уже перечислили...

(Отредактировано автором: 07 Июля, 2010 - 21:26:14)

 
 Top
Реф
Отправлено: 07 Июля, 2010 - 23:29:49
Post Id



Частый гость


Покинул форум
Сообщений всего: 159
Дата рег-ции: Июль 2010  
Откуда: Реутов, Россия


Помог: 0 раз(а)




Немножко ссылок по теме:
http://govnokod[dot]ru/ - примеры гвонокода
http://lurkmore[dot]ru/Code_monkey уж не помню в чём разница между быдо- и говнокдами (может её и нет), но ознакомиться будет полезно.
(Добавление)
Champion пишет:
А признаки у него такие: невнятные названия переменных, функций и пр., причудливое расположение отступов и скобок, отстутсвие нужных комментариев и присутствие глупых и не нужных. Это что касается стиля.

От всех признаков спасает вдумчивое прочтение
"Правила программирования на Си и Си++"
Ален И. Голуб

Не смотря на специфическое название и привязку к конкретному языку, почти все советы распространяются на программирование в целом. Топикпастеру рекомендую ознакомиться.

(Отредактировано автором: 07 Июля, 2010 - 23:45:28)



-----
Думать надо головой, а не головкой!
 
 Top
JustUserR
Отправлено: 08 Июля, 2010 - 02:16:47
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Champion пишет:
Неуместное использование каких-то ресурсоемких инструкций/библиотек
Кстати на этот признак я бы хотел обратить особенное внимание - поскольку явным его частным случаем является постоянноое использование фреймворка jquery в клиентских скриптах - где можно было прекрасно обойтись чистым JS-скриптом который при желании можно сделать гораздо более оптимизированным для данного вопроса Обобщая можно сказать что признаком плохого стиля программирования является тот случай когда заместо того чтобы обстоятельно разобраться с проблемой и найти ее решение или использовать walkaround - применяется какое-то решение лишь по той причине что автору про него известно или оно вообще на слуху но к делу прямого отношения в реальности не имеет


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
jenya777777
Отправлено: 08 Июля, 2010 - 08:04:26
Post Id


Новичок


Покинул форум
Сообщений всего: 18
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




Ну наконец то понял принципы говнокода, спасибо большое за ответы!
Больше всего понравился этот ответ
Цитата:
Если программированием занимаешься достаточно долго, открой исходники своих первых проектов.

Вот это я сразу понял, мои первые исходники, такое убожество Радость
 
 Top
JustUserR
Отправлено: 09 Июля, 2010 - 01:39:57
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




jenya777777 пишет:
Вот это я сразу понял, мои первые исходники, такое убожество
В принципе если код создавался в процессе обучения или для тестирования определенных возможностей или для других временных целей то его скорее можно отнести к отдельному классу - основным его отличием является то что он внутренний и как правило сравнительно небольшой А вот к истинно плохому коду можно отнести тот код который заранее создавался очень некачественно причем для конечного решения - а также неправильный код в котором задача изначально неправильно толкована и решается совершенно неприемлемым способом


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Champion Супермодератор
Отправлено: 10 Июля, 2010 - 17:34:50
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Вот, например, проверка, является ли переменная числом с пом. регулярных выражений - один из примеров.
http://forum.php.su/topic.php?fo...72362#1278772362
(Добавление)
Возможно, там где автор его нашел, есть еще много примеров.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB