- 1
Как избавиться от говнокода?
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+2
Как избавиться от говнокода?
Вот есть большой проект в большой корпорации. Ты приходишь и видишь, что архитектура говно, комментариев нет, стиль кода различается в разных частях одного файла, да и в остальных мелочах полный говнокод.
С другой стороны, нужно добавить много разных фич и пофиксить баги, все программисты и ты тоже активно заняты этим, вы приделываете новые костыли и заплатки.
Как с этим бороться? Убеждать менеджера, что вам нужно несколько недель, а то и месяцев на полный рефакторинг всего? Заниматься этим в свободное время? Забить и говнокодить дальше? Уйти в другое место (не факт ведь, что там будет лучше)?
dim1r 12.11.2015 13:06 # −4
Vasiliy 12.11.2015 13:49 # +3
CHayT 13.11.2015 09:17 # +1
потом кто-то устроит деградацию, и тимлид будет лазить по дереву версий, чтобы понять, кому дать по рогам
каково же будет его удовольствие, когда это дерево будет заполнено добавлениями пробелов для красоты (ок, в diff это можно отключить) и комментариев // if a equals 2 then continue execution in the then block
> Вести документацию проекта
документация убивает сакральную составляющую проекта
ничто не сравнится с этим трепетным чувством, когда ты подходишь к седовласому архитектору и смиренно спрашиваешь, по кой, собственно, хуй, тут используется ржавый велосипед вместо одного BLAS вызова, а он достаёт из-под стола коробку из-под ботинок и роется в отпечатанных на истлевшей перфорированной бумаге листингах, исписанных химическим карандашом
Vasiliy 13.11.2015 09:26 # +2
CHayT 13.11.2015 09:27 # +3
trust is a weakness
3_14dar 13.11.2015 18:51 # 0
Ну, что б все! (с) Шариков
guest 14.11.2015 20:18 # +3
bormand 14.11.2015 20:19 # +3
guest 14.11.2015 20:30 # +3
1024-- 14.11.2015 21:00 # +3
guest 14.11.2015 21:04 # +1
kegdan 14.11.2015 21:47 # +1
inkanus-gray 14.11.2015 21:29 # 0
bormand 14.11.2015 21:30 # 0
kegdan 14.11.2015 21:48 # +2
Vasiliy 16.11.2015 16:37 # 0
roman-kashitsyn 12.11.2015 14:14 # +8
Это точно не прокатит, будет только хуже, не зависимо от того, одобрят или нет.
> Заниматься этим в свободное время?
Плохо - выгоришь и забьёшь.
> Забить и говнокодить дальше?
Вариант, но чувство безысходности начнёт посещать всё чаще.
Кмк, наилучший вариант: составить список проблем в порядке убывания приоритета, разбить их на максимально независимые небольшие задачи, и при оценке сроков включать немного времени на решение очередной задачки из списка (можно не говорить об этом менеджерам). Желательно найти единомышленников и убедить их поступать также. Это муторно и требует планирования и настойчивости, но может сработать.
nihau 12.11.2015 17:29 # 0
roman-kashitsyn 12.11.2015 17:34 # +5
Через год можешь сменить работу ты, твой менеджер, вы оба, и вообще всё может быть совсем не так, как ты сказал. Вон Вася три года назад ныл, что всё через год сломается, Вася ушёл, а продукт живёт и здравствует!
Менеджеру обычно главное - успеть всё к следующему дедлайну, долгосрочные перспективы его, как правило, мало волнуют.
bormand 12.11.2015 17:35 # +3
Менеджеры разные бывают... Может быть ему надо продержаться этот год и свалить? Зачем ему тогда рискованный рефакторинг :)
> через год
А с "полным рефакторингом всего" - через неделю. А дальше начинается одновременная поддержка двух версий, бекпорты багфиксов и прочие радости...
Antervis 13.11.2015 06:25 # 0
CHayT 13.11.2015 09:26 # +3
kegdan 13.11.2015 09:29 # −2
CHayT 13.11.2015 11:40 # +1
> умнее
религиозное мышление в действии -- "сложные процессы не могут происходить сами по себе, за ними обязательно стоит разум, ну а разум -- искра божия, тут и рассуждениям конец"
Vasiliy 13.11.2015 11:44 # −1
А есть пример, что могут?
roman-kashitsyn 13.11.2015 11:47 # +5
Vasiliy 13.11.2015 13:48 # 0
Учёные сопоставили данные опыта с происходящим на Сатурне и выдвинули предположение, что в его высоких северных широтах отдельные струйные течения разогнаны как раз до той скорости, при которой формируется нечто вроде устойчивой волны — планетарный гексагон. И хотя «расследование» не раскрывает происхождения подобных течений, оно показывает, почему вся система столь красива и, главное, столь долго живёт
roman-kashitsyn 13.11.2015 14:01 # 0
> предположение
> не раскрывает происхождения подобных течений
Vasiliy 13.11.2015 14:05 # 0
roman-kashitsyn 13.11.2015 14:06 # 0
Abbath 13.11.2015 18:49 # +1
kegdan 13.11.2015 12:32 # 0
imihajlov 13.11.2015 10:42 # +3
CHayT 13.11.2015 11:02 # −3
CHayT 13.11.2015 14:21 # 0
бактерии, которые содержатся в лабораториях на агаре, довольно быстро "рефакторятся" в сторону упрощения ("красивого кода"), что намекает на то, что весь этот "говнокод" по сути -- необходимый для существования в переменчивой среде запас изменчивости
из-за наличия этого "говнокода", "мёртвого" и "устаревшего" кода полезные качественные мутации и могут возникнуть за считанное число поколений
курим статьи по эксперименту Ленски до просветления
> Всё сделано по принципу "работает - не трожь".
лол, просто лол
imihajlov 13.11.2015 14:32 # 0
CHayT 13.11.2015 14:56 # −1
ошибки при копировании генома неизбежны, поэтому "не трогать" там что-то невозможно с точки зрения термодинамики
более того, некоторые микроорганизмы сами могут увеличивать частоту мутаций в определённых условиях, и это эволюционно выработанный механизм выживания
ну и не забываем про эволюционную "гонку вооружений", которая тоже не особо позволяет что-то "не трогать"
guest 13.11.2015 21:25 # 0
человек тянет за собой куски неработающих вирусов которые насрали ему в днк, какую-то тупую обратную совместимость вроде жабр и хвоста младенца, в нем куча моков вроде груди у мужика, и вообще архитектура нихрена не логичная
roman-kashitsyn 13.11.2015 21:58 # +4
Это накатываются инкрементальные апдейты
> вроде груди у мужика
Это как код, который вроде и не нужен уже, а выкинуть жалко. А ВДРУГ?
CHayT 01.12.2020 00:29 # +1
Привет из 2020, тут это оказалось модно и молодёжно.
guest6 01.12.2020 00:32 # 0
Professor_Fortran 01.12.2020 17:40 # 0
CHayT 13.11.2015 21:58 # +4
эволюция прекрасно умеет очищать геном от лишнего, это произошло у птиц, к примеру
тот факт, что она не избавляется от неактивных генов у млекопитающих человеку, хотя бы наполовину не являющемуся ошибкой эволюции, должен подсказывать, что это предоставляет какое-то преимущество
ничего, что упомянутые тобой вирусные гены могут принести в клетку готовый репецт синтезирования новых белков?
горизонтальный обмен генами -- это потенциально куда более быстрый двигатель эволюции, чем этот ваш секс
те, кто смог пережить эпидемию ретровируса, получает в запас готовую "подпрограмму" (выражаясь вашим говноязыком)
новая мутация может в определённый момент активировать её, и получится новый потенциально полезный признак
вылезайте из восьмидесятых, ребята
guest 13.11.2015 22:02 # 0
может быть ты еще и в уринотерапию не веришь? и в гороскопы?
CHayT 13.11.2015 22:04 # 0
процесс развития многоклеточного организма -- это не хуй из пенька выстругать
это самоорганизующийся процесс, в котором задействована куча химических регуляторов и сетей связи
попробуй его "оптимизируй"
bootcamp_dropout 30.11.2020 23:47 # 0
CHayT 01.12.2020 00:21 # +1
Antervis 13.11.2015 13:29 # 0
dxd 13.11.2015 19:14 # −1
roman-kashitsyn 13.11.2015 10:01 # 0
Исходя из моей практики, это - единственный подход, который действительно работает. Глобальные переписывания всего и вся, как правило, заканчиваются если не крахом, то уж точно не тотальным успехом.
Вдохновляющая история товарища, который переписал свой немаленький проект целиком на другом языке, используя итерационный подход:
Vasiliy 13.11.2015 11:25 # −5
imihajlov 13.11.2015 11:29 # +3
Vasiliy 13.11.2015 11:31 # 0
kegdan 13.11.2015 12:36 # +3
guest 13.11.2015 12:41 # +2
Abbath 13.11.2015 19:36 # 0
naxoM 13.11.2015 19:46 # +2
Vasiliy 13.11.2015 13:55 # 0
>свеженькое только говно
Я ничего другого и не просил. Хотя ерничаю конечно. Советская поза местами доставляет Ефремов например. Его "Туманость Андромеды" просто прекрасна.
Abbath 13.11.2015 19:37 # 0
Vasiliy 13.11.2015 19:47 # 0
guest 13.11.2015 23:01 # +1
Читай лучше Евгения Попова, Вася.Он пишет про ПХП и на русском
bormand 12.11.2015 17:23 # +4
Который гарантированно закончится полным пиздецом и крахом.
> стиль кода различается в разных частях одного файла
Ну здесь легко. Поправил что-то в файле - освежи в нём стиль, если есть свободная минутка.
Antervis 13.11.2015 06:27 # 0
bormand 13.11.2015 17:34 # 0
guest 13.11.2015 19:43 # +2
--Вася, а что ты делал последние 4 недели?
--Рефакторил
--А покажи
--Ну я сейчас в процессе, у меня даже проект не собирается
--А когда будет?
--Ну через неделю-две где-то планирую
3_14dar 13.11.2015 20:40 # 0
Так не рефакторят
guest 13.11.2015 20:44 # +2
Но все равно все говнокодят
3_14dar 14.11.2015 20:01 # 0
kegdan 12.11.2015 18:24 # +7
Сидит программист глубоко в отладке. Подходит сынишка:
- Папа, почему солнышко каждый день встает на востоке, а садится на западе?
- Ты это проверял?
- Проверял.
- Хорошо проверял?
- Хорошо.
- Работает?
- Работает.
- Каждый день работает?
- Да, каждый день.
- Тогда ради бога, сынок, ничего не трогай
3_14dar 12.11.2015 18:43 # +2
kegdan 12.11.2015 19:20 # −2
я прощаю тебя
3_14dar 12.11.2015 20:26 # −1
orion 12.11.2015 19:38 # +1
для си-подобных языков можно натравить авто-форматеры. в нашей команде для плюсов юзаем clang-format перед каждым комитом прехуком. очень полезная практика.
для всяких питонов, жс можно использовать линтеры, и например не давать комитить, если код неправославный оформлен не по вашему стандарту
bormand 12.11.2015 19:56 # +1
guest 14.11.2015 02:12 # 0
bormand 14.11.2015 06:40 # 0
guest 17.11.2015 02:06 # 0
3_14dar 17.11.2015 02:27 # +3
guest 17.11.2015 02:27 # +2
с тобой в библиотеке встречается пидарас?
зачем?
3_14dar 17.11.2015 02:52 # 0
guest 17.11.2015 03:37 # 0
1024-- 17.11.2015 14:59 # 0
3_14dar 18.11.2015 05:13 # 0
3_1415dar 18.11.2015 19:51 # 0
CHayT 18.11.2015 22:18 # 0
kegdan 17.11.2015 05:52 # 0
1024-- 17.11.2015 14:59 # 0
У меня пробелы показываются точечкой, а табы стрелочкой. На глаз различимы.
inkanus-gray 18.11.2015 22:06 # +1
То ты не сможешь писать на Питоне.
bormand 19.11.2015 20:22 # 0
Vasiliy 19.11.2015 21:02 # 0
guest 20.11.2015 01:55 # 0
3_14dar 12.11.2015 20:28 # +1
orion 12.11.2015 21:38 # 0
-style=<string>
также можно указать свой конфиг -style=/path/to/.clang-format
http://clang.llvm.org/docs/ClangFormat.html
3_14dar 13.11.2015 00:20 # 0
orion 13.11.2015 01:21 # 0
roman-kashitsyn 13.11.2015 09:55 # +1
Форматирование не всегда идеальное (версии в <= 3.5, например, грешили тем, что форматировали 3 почти одинаковые строчки трёмя разными способами), но это всё равно гораздо лучше, чем крестовый код ровнять руками.
guest 14.11.2015 02:11 # 0
roman-kashitsyn 16.11.2015 17:03 # 0
Было что-то вроде этого:
3_14dar 13.11.2015 18:52 # 0
orion 14.11.2015 01:15 # 0
roman-kashitsyn 12.11.2015 22:06 # 0
Опции-то я добавил, но нужно ждать следующего релиза, пакетировать под наш линупс, etc. Процесс долгий.
orion 14.11.2015 01:34 # 0
guest 13.11.2015 21:23 # 0
Вы бесконечно счастливый человек если думаете Говнокод это когда нарушается правило в 80 символов в строке)
А вот когда в семи местах одно и тоже написано, да еще и по разному -- вот это говнокод
orion 14.11.2015 01:20 # 0
для проверки качества кода также есть сервисы. они бьют по рукам когда у функций/методов много параметров, позволяют находить копи-пасты, длинные функции. я для опен-сорцных поделок пользую http://codeclimate.com и очень доволен
guest 14.11.2015 02:09 # 0
guest 14.11.2015 02:12 # 0
Fike 12.11.2015 23:11 # +3
Antervis 13.11.2015 06:29 # 0
dxd 13.11.2015 19:22 # −1
Milonov 23.11.2015 19:44 # 0
guest 13.11.2015 19:42 # 0
guest 13.11.2015 19:41 # +1
Сидите, и ждете когда у вас появится фича "Foo". Затем оцениваете её: "при нынешней архитектуре это займет 1 день, но если появится foo2 то это еще день. Рефакторинг подсистемы Bar займет неделю, в итоге Foo* можно будет добавлять через GUI".
И вот так по кусочку по кусочку лет за тридцать разгребете все говно
kurwa 23.11.2015 03:36 # 0