Говнокод
От: RussianFellow Россия http://russianfellow.livejournal.com
Дата: 15.01.18 07:26
Оценка: 12 (1) :)))
В этой теме, уважаемые коллеги. я хотел бы обсудить такое понятие, как говнокод.

Что является говнокодом? Каковы его критерии?
Как часто встречается говнокод в вашей практике? Много ли говнокодеров вы встречали?
Что делают на работе с говнокодом и говнокодерами? Увольняют ли говнокодеров? Если да, то как часто такое встречается?

И как исправлять говнокод на нормально смотрящийся код?
1613 г. = 2024 г.
Re: Говнокод
От: RussianFellow Россия http://russianfellow.livejournal.com
Дата: 15.01.18 07:27
Оценка:
P.S. И могли бы вы, уважаемые коллеги, привести пример говнокода или дать ссылки на него?
1613 г. = 2024 г.
Re[2]: Говнокод
От: reversecode google
Дата: 15.01.18 07:29
Оценка: 6 (1)
http://govnokod.ru/cpp
Re[2]: Говнокод
От: hi_octane Беларусь  
Дата: 15.01.18 09:04
Оценка:
RF>P.S. И могли бы вы, уважаемые коллеги, привести пример говнокода или дать ссылки на него?
Для меня эталоном действующего C++ говонокода является сорец игры "ЩИ!!!Симулятор жестокости". О самой игре с комментариями автора и заинтересованных лиц можно почитать на gamedev.ru, а тут мемуары автора: "Щи: симулятор жестокости" или "Как не надо делать игры" — в которых автор по шагам описывает как доводил игру до рабочего состояния а её код до уровня "Щи!!!".
Re: Говнокод
От: De-Bill  
Дата: 15.01.18 09:19
Оценка: 13 (2) +11 :))) :))) :))) :))) :))
RF>Что является говнокодом? Каковы его критерии?

Единственный критерий: всё, что писал не я — говнокод. Мой код всегда восхитителен.

RF>Как часто встречается говнокод в вашей практике? Много ли говнокодеров вы встречали?


Встречается всегда и везде, кроме проектов, над которыми работал я один.

RF>Что делают на работе с говнокодом и говнокодерами? Увольняют ли говнокодеров? Если да, то как часто такое встречается?


Ни разу не видел, чтобы увольняли за говнокод. Оно и понятно, оставить пришлось бы одного меня, а всех остальных уволить. А я один, на все проекты меня не хватит.

RF>И как исправлять говнокод на нормально смотрящийся код?


Исправить могу только я. Остальные сколько не будут исправлять говнокод — он говнокодом и останется.
Re[3]: Говнокод
От: Pzz Россия https://github.com/alexpevzner
Дата: 15.01.18 10:38
Оценка: 5 (1) +2
Здравствуйте, hi_octane, Вы писали:

_>Для меня эталоном действующего C++ говонокода является [url=https://gist.github.com/ForNeVeR/9001938]сорец игры "ЩИ!!!


Была в свое время популярна такая система контроля версий, как CVS. Собственно, git в те времена был еще не только не написан, но даже и не придуман, а авторы SVN еще не родились.

Я как-то полез в ее исходники с мыслью, а не сделать ли бы мне так, чтобы она текстовые файлы на венде автоматически раскладывал по-вендовому (в смысле концов строк), а на юниксе и на сервере — по-юниксовски.

Наивный, я думал, что сейчас без труда найду те места, где они собственно с файлами и работают, и слегка их подправлю. Большего говнокода я в жизни своей не видел (вернее, потом видел, но под подпиской о неразглашении, и не могу о нем говорить). Там работа с файлами встречается в миллионе мест, все размазано тонким слоем по всем исходникам, и с какой целью написан вот именно этот fopen(), понять совершенно невозможно. Протрахавшись несколько дней, я сдался.
Re[2]: Говнокод
От: AleksandrN Россия  
Дата: 15.01.18 10:57
Оценка: +1
Здравствуйте, De-Bill, Вы писали:

RF>>Что является говнокодом? Каковы его критерии?


DB>Единственный критерий: всё, что писал не я — говнокод. Мой код всегда восхитителен.


А то, что писал ты, но года 2-3 назад?
Re[2]: Говнокод
От: yenik  
Дата: 15.01.18 11:00
Оценка: +5 :)
DB>Единственный критерий: всё, что писал не я — говнокод. Мой код всегда восхитителен.

Кроме случаев, когда я уже забыл, что это мой код.
Re: Говнокод
От: Tourist Россия  
Дата: 15.01.18 11:10
Оценка: +3
Здравствуйте, RussianFellow, Вы писали:

RF>Что является говнокодом? Каковы его критерии?


для меня такие критерии

* куча мертвого кода (ну скажем от 10% от всего кода)
* безумный copy-past (10 и больше копий одного и того же кода)
* классы по 5000 и больше строк кода
* безумные if-else конструкции(пять и больше уровней вложенности)
* нету единого стиля (один класс могут использоваться как отсупы 4 проблема, 4 таба, 2 таба, без отступов вообще).
* не явные контракты у API о том как этот API можно использовать. Множество side-эффектов при вызове разных методов.
Re[3]: Говнокод
От: Stanislaw K СССР  
Дата: 15.01.18 11:17
Оценка: :)
Здравствуйте, AleksandrN, Вы писали:

DB>>Единственный критерий: всё, что писал не я — говнокод. Мой код всегда восхитителен.


AN>А то, что писал ты, но года 2-3 назад?


Это враги исправили испортили но оставили мой копирайт.
Все проблемы от жадности и глупости
Re[2]: Говнокод
От: elmal  
Дата: 15.01.18 11:19
Оценка:
Здравствуйте, RussianFellow, Вы писали:

RF>P.S. И могли бы вы, уважаемые коллеги, привести пример говнокода или дать ссылки на него?

http://rsdn.org/forum/mfc/6889209.1
Автор: RussianFellow
Дата: 30.08.17

1) Вся логика в обработчике кнопки, нарушение Single Responsibility Principle. Разбивать на мелкие функции с определенной ответственностью по любому, чтение файла — отдельная функция должна быть. В самой логике не должно быть никаких ссылок на UI диалоги и тому подобное, соответственно это еще кандидат на функцию. Всякие сложные инициализации и т.д — снова функции должны быть. А тут вообще полная каша, хоть и типичная для студентов первого курса;
3) Имена переменных объявлены не ближе к использованию, а в начале файла. Это крайне хреновая практика, вообще то;
4) magic numbers — хардкод имени файла в коде, какие то непонятные константы 60 и 48.

Пока хватит. После привидения в читаемый вид можно дальше смотреть.
Re[3]: Говнокод
От: koenig  
Дата: 15.01.18 12:34
Оценка:
Здравствуйте, elmal, Вы писали:

E>Пока хватит. После привидения в читаемый вид можно дальше смотреть.


сходил по ссылке, понастальгировал, спасибо
Re: Говнокод
От: Amon_RA Россия  
Дата: 15.01.18 13:18
Оценка: +2
Здравствуйте, RussianFellow, Вы писали:

RF>Что является говнокодом? Каковы его критерии?


Это когда открыв один единственный файл из проекта не в IDE, а в блокноте, ты не можешь понять, что это вообще такое и зачем это надо

RF>И как исправлять говнокод на нормально смотрящийся код?


Исправлять? Думается, что никак. Переименовать классы и переменные и привести к единому стилю — этого мало. В говнокоде зависимости и сама архитектура тоже говенные. А это уже просто так не исправить.
Аккуратность надо в себе воспитывать с самого начала.
Re: Говнокод
От: mgu  
Дата: 15.01.18 23:36
Оценка: +1
Здравствуйте, RussianFellow, Вы писали:

RF>Что делают на работе с говнокодом и говнокодерами? Увольняют ли говнокодеров? Если да, то как часто такое встречается?


Вот здесь всё прекрасно изложено:

О говнокодерах
Re[2]: Говнокод
От: Gradiens  
Дата: 16.01.18 09:16
Оценка:
Здравствуйте, Tourist, Вы писали:

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


RF>>Что является говнокодом? Каковы его критерии?


T>для меня такие критерии


T>* куча мертвого кода (ну скажем от 10% от всего кода)

T>* безумный copy-past (10 и больше копий одного и того же кода)
T>* классы по 5000 и больше строк кода
T>* безумные if-else конструкции(пять и больше уровней вложенности)
T>* нету единого стиля (один класс могут использоваться как отсупы 4 проблема, 4 таба, 2 таба, без отступов вообще).
T>* не явные контракты у API о том как этот API можно использовать. Множество side-эффектов при вызове разных методов.

Какие-то мягкие критерии.
Я бы сказал, что более 2-х копипаст и классы больше 500 строк уже смердят, но, может, я слишком нежный ))
Re: Говнокод
От: reversecode google
Дата: 16.01.18 09:54
Оценка:
говнокод — когда в коде сложно разобраться
признак сложности это отсутствие SOLID
Re[2]: Говнокод
От: RussianFellow Россия http://russianfellow.livejournal.com
Дата: 16.01.18 09:55
Оценка:
Здравствуйте, reversecode, Вы писали:


R>говнокод — когда в коде сложно разобраться

R>признак сложности это отсутствие SOLID

А что такое SOLID ?
1613 г. = 2024 г.
Re[2]: Говнокод
От: RussianFellow Россия http://russianfellow.livejournal.com
Дата: 16.01.18 09:59
Оценка:
Здравствуйте, De-Bill, Вы писали:

RF>>Что делают на работе с говнокодом и говнокодерами? Увольняют ли говнокодеров? Если да, то как часто такое встречается?


DB>Ни разу не видел, чтобы увольняли за говнокод. Оно и понятно, оставить пришлось бы одного меня, а всех остальных уволить. А я один, на все проекты меня не хватит.


А вот Ночной Смотрящий говорит, что в его организации увольняли за говнокод. Что это за организация такая, интересно?
1613 г. = 2024 г.
Re[3]: Говнокод
От: reversecode google
Дата: 16.01.18 10:08
Оценка:
правила рекомендующие разделять мух от котлет
Re[3]: Говнокод
От: Tourist Россия  
Дата: 16.01.18 10:16
Оценка: +1
Здравствуйте, Gradiens, Вы писали:

G>Какие-то мягкие критерии.

G>Я бы сказал, что более 2-х копипаст и классы больше 500 строк уже смердят, но, может, я слишком нежный ))

Можно сказать, что это экстремумы. Каждый сам может пытаться подобрать параметры под себе т.к. нижние границы очень дискусионные. К примеру 500 строк кода в классе, вполне обычное и нормальное явление на мой взгляд в большинстве проектов которые я видел.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.