Код под шифром "Г"
От: 0x7be СССР  
Дата: 19.08.15 09:14
Оценка:
Коллеги,

всем нам известно такое позорное явление, как "говнокод". Кто хотя бы раз в жизни не восклицал, глядя на код: "Ну что за говно? Надо всё переписать!"?
Но четкого определения этому явлению нет, всё как-то больше интуитивно. Что для вас является "говнокодом"? Каким критериям должен удовлетворять код, чтобы заслужить эту оценку с вашей стороны?
Объективное ли это свойство кода, или "говнокод в глазах рефакторящего"?

Дискуссия приветствуется
Re: Код под шифром "Г"
От: s_aa Россия  
Дата: 19.08.15 09:22
Оценка: +1 :)))
0>Объективное ли это свойство кода, или "говнокод в глазах рефакторящего"?

Хоть бы разочек посмотреть на RSDNе на кусок кода, строк в 20, и чтобы никто не обозвал его говнокодом.
Отсылания во всякие опенсорсные проекты не считаются.
Жизнь не обязана доставлять удовольствие. Достаточно отсутствия страданий.
Re: Код под шифром "Г"
От: Carc Россия https://vk.com/gosha_mazov
Дата: 19.08.15 09:24
Оценка: :)
Здравствуйте, 0x7be, Вы писали:

0>Дискуссия приветствуется

Зритель в консерватории срывающимся шепотом и перекрывая музыку обращается к соседу "Скажите, это Глинка?". Сосед, положив ногу на ногу и задумчиво разглядывая свой ботинок: "Вот и я думал, что глинка... А теперь вижу что говно".


Если шутки в сторону, то берем Макконела и далее везде со всеми остановками — вот вам и критерии.
Aml Pages Home
Re[2]: Код под шифром "Г"
От: 0x7be СССР  
Дата: 19.08.15 09:24
Оценка: +1
Здравствуйте, s_aa, Вы писали:

_>Хоть бы разочек посмотреть на RSDNе на кусок кода, строк в 20, и чтобы никто не обозвал его говнокодом.

_>Отсылания во всякие опенсорсные проекты не считаются.
Намекаешь на синдром "Not invented here"?
Re[2]: Код под шифром "Г"
От: 0x7be СССР  
Дата: 19.08.15 09:26
Оценка:
Здравствуйте, Carc, Вы писали:

C>Если шутки в сторону, то берем Макконела и далее везде со всеми остановками — вот вам и критерии.

То есть, если написать код в соответствии с его рекомендациями, то никто-никто не назовёт этот код говном?
Re[3]: Код под шифром "Г"
От: Carc Россия https://vk.com/gosha_mazov
Дата: 19.08.15 09:29
Оценка: +1
Здравствуйте, 0x7be, Вы писали:

0>Здравствуйте, Carc, Вы писали:


C>>Если шутки в сторону, то берем Макконела и далее везде со всеми остановками — вот вам и критерии.

0>То есть, если написать код в соответствии с его рекомендациями, то никто-никто не назовёт этот код говном?
Ну я скорее про объективность, а не про формализмы. Есть какие-то существенные моменты, вроде "одна функция одна задача", долой 5000 строк на функцию и.т.п. Если в целом код соответствует этим критериям, то гут. А назвать можно что угодно, и как угодно. Это уже религиозные войны. И наверное не нужно возводить все эти критерии в абсолют. Все таки важен продукт, а не только сам код (хотя он и гиперважен), поэтому в некоторых моментах иногда следует остановиться с вылизыванием "красоты".
Aml Pages Home
Re[4]: Код под шифром "Г"
От: Кодт Россия  
Дата: 19.08.15 09:43
Оценка: +3 :)
Здравствуйте, Carc, Вы писали:

C>Ну я скорее про объективность, а не про формализмы. Есть какие-то существенные моменты, вроде "одна функция одна задача", долой 5000 строк на функцию и.т.п. Если в целом код соответствует этим критериям, то гут. А назвать можно что угодно, и как угодно. Это уже религиозные войны. И наверное не нужно возводить все эти критерии в абсолют. Все таки важен продукт, а не только сам код (хотя он и гиперважен), поэтому в некоторых моментах иногда следует остановиться с вылизыванием "красоты".


Лучший формализм — это метрика WTF/min.
Причём невзирая на. Человек может написать для частной задачи совершенный интерпретатор-лиспа-на-хаскелле на голом си, но его индийские коллеги замучаются сопровождать эту красоту, поэтому его код, по сути, явится ажурным говном.
Даже знаменитое Устройство Дуффа — это говнокод, по причине ужасной сопровождаемости.
Перекуём баги на фичи!
Re[4]: Код под шифром "Г"
От: 0x7be СССР  
Дата: 19.08.15 09:58
Оценка:
Здравствуйте, Carc, Вы писали:

C>Ну я скорее про объективность, а не про формализмы. Есть какие-то существенные моменты, вроде "одна функция одна задача", долой 5000 строк на функцию и.т.п. Если в целом код соответствует этим критериям, то гут. А назвать можно что угодно, и как угодно. Это уже религиозные войны. И наверное не нужно возводить все эти критерии в абсолют. Все таки важен продукт, а не только сам код (хотя он и гиперважен), поэтому в некоторых моментах иногда следует остановиться с вылизыванием "красоты".

Понятно, спасибо за ответ
Re: Код под шифром "Г"
От: Sinix  
Дата: 19.08.15 10:01
Оценка: 26 (4) +4
Здравствуйте, 0x7be, Вы писали:

0>Но четкого определения этому явлению нет, всё как-то больше интуитивно. Что для вас является "говнокодом"? Каким критериям должен удовлетворять код, чтобы заслужить эту оценку с вашей стороны?


Для коммерческого софта это любой код, который вызывает проблемы при поддержке и сопровождении (разумеется, к автосгенеренному код, который сам по себе поддерживать не надо, это не относится).

Критерии стандартные:
* повсеместное нарушение SRP,
* отсутствие комментариев/документации там, где они нужны,
* использование динамики/кастинга типов там, где они не нужны,
* нарушение стандартных рекомендаций по оформлению кода/дизайну API,
* постоянное использование своих вспомогательных классов/методов вместо кода из фреймфорка/библиотеки хелперов,
* использование паттернов ради паттернов (как только в имени типа с БЛ появляется Strategy/Singleton/Selector — вы попали),
* попытка эмулировать поведение других языков (например, Optional/Either для шарпа (в c# на сегодня нет PM/variants)),
* код на побочных эффектах, особенно без документирования отладочными ассертами.
* WTF/sec при ознакомлении с кодом.

Ну и любые другие признаки write-only кода, тысячи их.

Разумеется, к любому из пунктов можно придраться: исключения, "ятакделал" и всё такое. Надеюсь, все мы понимают, что это будет спор ради спора, не?

0>Объективное ли это свойство кода, или "говнокод в глазах рефакторящего"?

По сути, "говнокод" — это та же метрика качества кода, только со знаком минус. Т.е. объективное. Не количественное. Все согласны с тем, что измерять его вообще-то надо, но при этом не согласны с любым из конкретных предложений.
Re[5]: Код под шифром "Г"
От: Carc Россия https://vk.com/gosha_mazov
Дата: 19.08.15 10:04
Оценка: +3
Здравствуйте, Кодт, Вы писали:
К>Лучший формализм — это метрика WTF/min.
К>Причём невзирая на. Человек может написать для частной задачи совершенный интерпретатор-лиспа-на-хаскелле на голом си, но его индийские коллеги замучаются сопровождать эту красоту, поэтому его код, по сути, явится ажурным говном.
К>Даже знаменитое Устройство Дуффа — это говнокод, по причине ужасной сопровождаемости.

Согласен! Сам по молодости написал какой-то сериализатор для ини-файлов на шаблонах в двух плюсах. И сколько я на него потом не смотрел, возникало именно "как этим вообще пользоваться?", не то чтобы "как оно работает", или "как его развивать\изменять\поддерживать". Долго так смотрел, все рука не подымалась, все ж как никак жутко шаблонный код, предмет моей гордости в далекой сопливой юности . А потом радикально: Ctrl+A + Delete, и все с нуля

В общем, совершенство это когда нечего убрать, а не когда нечего добавить (ц)
Aml Pages Home
Re: Код под шифром "Г"
От: LaptevVV Россия  
Дата: 19.08.15 10:36
Оценка: +3
0>Объективное ли это свойство кода, или "говнокод в глазах рефакторящего"?
Субъективное.
Зависит от цели, которая ставилась при написании кода.
Можно написать:
— самый читабельный код;
— самый короткий код;
— самый быстрый код;
— самый красивый код;
Вот в этой книжке: http://www.eknigu.com/info/Cs_Computer%20science/Weinberg%20G.M.%20Psychology%20of%20computer%20programming(T)(C)(299s).djvu
которая была издана первый раз аж в 1971 году, автор об этом пишет.
Как программисты для одной и той же задачи писали совершенно разный код в зависимости от поставленной цели.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: Код под шифром "Г"
От: 0x7be СССР  
Дата: 19.08.15 11:12
Оценка: +3
Здравствуйте, LaptevVV, Вы писали:

LVV>Субъективное.

LVV>Зависит от цели, которая ставилась при написании кода.
LVV>Можно написать:
LVV>- самый читабельный код;
LVV>- самый короткий код;
LVV>- самый быстрый код;
LVV>- самый красивый код;
LVV>Вот в этой книжке: http://www.eknigu.com/info/Cs_Computer%20science/Weinberg%20G.M.%20Psychology%20of%20computer%20programming(T)(C)(299s).djvu
LVV>которая была издана первый раз аж в 1971 году, автор об этом пишет.
LVV>Как программисты для одной и той же задачи писали совершенно разный код в зависимости от поставленной цели.
Интересная точка зрения. Особенно бывает весело, если код человека с одной целью (системой ценностей) попадёт на оценку человеку с другой
Видел я такие эпик баттлы в своей практике
Re[5]: Код под шифром "Г"
От: 0x7be СССР  
Дата: 19.08.15 11:14
Оценка: :)
Здравствуйте, Кодт, Вы писали:

К>Причём невзирая на. Человек может написать для частной задачи совершенный интерпретатор-лиспа-на-хаскелле на голом си, но его индийские коллеги замучаются сопровождать эту красоту, поэтому его код, по сути, явится ажурным говном.

Прекрасный термин! Возьму на вооружение
Re[2]: Код под шифром "Г"
От: Mamut Швеция http://dmitriid.com
Дата: 19.08.15 16:18
Оценка: +2
S>* WTF/sec при ознакомлении с кодом.

Я бы сказал, что это — действительно единственный достойный критерий. Причем говнокодом является даже супермегапрекрасный код мегагуру программирования, если он написан там, где с этим кодом будут работать программисты, не имеющее аршин во лбу.


dmitriid.comGitHubLinkedIn
Re[2]: Код под шифром "Г"
От: Aleх  
Дата: 20.08.15 13:49
Оценка:
Здравствуйте, LaptevVV, Вы писали:

0>>Объективное ли это свойство кода, или "говнокод в глазах рефакторящего"?

LVV>Субъективное.
LVV>Зависит от цели, которая ставилась при написании кода.
LVV>Можно написать:
LVV>- самый читабельный код;
LVV>- самый короткий код;
LVV>- самый быстрый код;
LVV>- самый красивый код;
LVV>Вот в этой книжке: http://www.eknigu.com/info/Cs_Computer%20science/Weinberg%20G.M.%20Psychology%20of%20computer%20programming(T)(C)(299s).djvu
LVV>которая была издана первый раз аж в 1971 году, автор об этом пишет.
LVV>Как программисты для одной и той же задачи писали совершенно разный код в зависимости от поставленной цели.

Быстрота кода и размер кода понятия объективные и формализуемые. Читабельность и красивость — нет. Так что это не цели, а отсутсвия целей.

Нормально, когда удобнее читать меньшее количество кода (в конструкциях языка). А у некоторых читабельность какая то эзотерическая. Такая, что они сами не могут описать это. Либо удалось сразу понять, и люди делают вывод о положительной читаблельности/красивости. Либо нет.
Re[3]: Код под шифром "Г"
От: LaptevVV Россия  
Дата: 20.08.15 14:34
Оценка:
A>Быстрота кода и размер кода понятия объективные и формализуемые.
Объективные, но относительные.
Самый короткий код не всегда будет самым быстрым.
A>Нормально, когда удобнее читать меньшее количество кода (в конструкциях языка). А у некоторых читабельность какая то эзотерическая.
Не. Читабельность вполне понятное понятие...
Вот в среднем читабельность программы на Питоне заметно выше читабельности проги на С++...
И опять же понятно, что можно на обоих языках писать наоборот: не читабельно на питоне и читабельно на С++.
А измерять читабельность вполне можно.
Выделить некоторые признаки читабельного кода (например, отступы вложенных блоков...),
построить метрику — и оценивай себе на здоровье...
Можно построить нечеткую модель, где читабельность — это лингвистическая переменная,
а уровень читабельности — это ее термы: не читабельно, ниже среднего, средняя, выше среднего, супер.
Тогда функция принадлежности — это и есть та метрика.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.