Re: Качество кода.
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 30.08.11 10:35
Оценка: 3 (2) +1
Здравствуйте, LaptevVV, Вы писали:

LVV>Я довольно давно на РСДН.

LVV>И как-то не припомню, чтобы был хоть один пост о хорошем качестве кода.
LVV>Как правило, посты следующего содержания:
LVV>

LVV>Перекинули на старый проект... Проект разрабатывали примерно ... человек в разное время, документация есть, но скудная. И главное — это ужасное качество кода.


На всякий, шоб ссылаться, признаки проблемного кода

1. Кривой дизайн/микродизайн (непонятное, много мест для изменения, много сущностей и тд)
2. Дублирование (в любом виде: от строчек, функций, классов до параллельных механизков вроде трёх версий контроллера ) ACHTUNG !
3. Простыни (длинные файлы/классы/функции/конфиги/имена/цепочки и тд)
4. Высокая вложенность конструкций
а Несколько классов в одном рукописном файле
б уровень вложенности блоков >= 3 ACHTUNG !
в вложенные конструкции вроде сложных запросов linq(на пол-экрана и более)
г несколько операторов в одной строке или одной конструкции, например условие цикла из десятка логический условий

И разные эвристики ACHTUNG !

1. Количество ревизий у файла превышает все разумные границы ACHTUNG !
2. Появления кучки странных багов после небольшого фикса ("добавил картинку — пропал грид")
3. Комментарии в файле (sic!)
4. Велосипеды. Например самопальное кеширование без грамотных юнит-тестов == рассадник багов.
5. Глотание исключений
6. Десятки сборок по пять классов на каждую
7. разделение проекта на несколько солюшнов
8. наличие мега-тулов для сборки, вроде антов-нантов, говномавенов и прочей дури, многоступенчатая сборка
9. мануал или т.н. курс молоджого бойца для работы с проектом
Re[4]: Качество кода.
От: Privalov  
Дата: 30.08.11 10:50
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Теперь вопрос — является ли стоимость изменения критичной для клиента который платит за продукт решающий его проблемы ?


Боюсь, что стоимость изменений станет критичной для исполнителя, потому как клиенту на это по фигу, как и на объяснения исполнителя, что "там все плохо". О затратах на правки багов я даже не заикаюсь. Как правило, баги долго разыскиваются, но легко правятся. У меня в одном из проектов был случай: нашел проблему буквально за пару минут, но чинил примерно неделю. Наследование a-la Sheridan и некоторые другие мелочи.
Re[5]: Качество кода.
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 30.08.11 10:52
Оценка: 2 (1)
Здравствуйте, Mystic, Вы писали:

I>>Аккуратно это как ? Устраняешь дублирование и внезапно получается не только реюзабельность, но оопшность и функциональщина.

M>А потом просят добавить новые фичи, но только в одну из веток. В результате возникают флажки, виртуальные функции, а конце скрещивание ежа и ужа.

Есть пять способов борьбы

1. Сделай код чище чем был до тебя. Вынесешь ветку в отдельную функцию — это вполне достаточно для начала.

2. Правило трёх раз (бог любит троицу) — меняешь код первый раз, смотришь сколько сил-времени уходит и какой результат. Меняешь код второй раз — смотришь что можно улучшить. Меняешь код в третий раз — обязательно делай его лучше.

3. Правило четырёх (без четырях углов изба не стоит)- меняешь код первый раз, меряешь профит. Меняешь код второй раз — смотришь что можно улучшить. Меняешь код в третий раз — исправляешь дизайн, дублирование нахрен, т.е. тотально, после чего делаешь откат. Меняешь код в четвертый раз и обязательно улучшаешь его.

4. Закон сохранения энергии — что бы ускорить(== удешевить) проект, нужно отдать ему часть своей энергии, которую направить на а. облегчение б. ускорение (фича != ускорение)

5. Эволюция — что бы сделать чтото хорошо, надо сначала сделать это плохо а потом обязательно улучшать

Выбирай любой. Оставлять говнокод тоже вариант, надо только набраться храбрости и сказать себе : "Дырка в заднице является оправданием для говнокода".
Re[5]: Качество кода.
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 30.08.11 10:53
Оценка:
Здравствуйте, Privalov, Вы писали:

P>Боюсь, что стоимость изменений станет критичной для исполнителя, потому как клиенту на это по фигу, как и на объяснения исполнителя, что "там все плохо". О затратах на правки багов я даже не заикаюсь. Как правило, баги долго разыскиваются, но легко правятся. У меня в одном из проектов был случай: нашел проблему буквально за пару минут, но чинил примерно неделю. Наследование a-la Sheridan и некоторые другие мелочи.


А что ты делал целую неделю ?
Re[3]: Качество кода.
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 30.08.11 10:54
Оценка: 1 (1)
Здравствуйте, Ikemefula, Вы писали:

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


ry>>Несколько лет был на поддержке кода пользовательского интерфейса моторольских телефонов. Когда только вообще впервые увидел моторольский код, ужаснулся, но не от качества (что я понимал тогда в этом), а от его объёма — и понял, какой же фигнёй занимался до этого. И только ленивый не ругался на его качество. То ли под воздействием таких разговоров, то ли в силу возрастающего профессионализма я стал считать, что могу писать код лучше. Ещё некоторое время спустя я увидел (стал различать), что это не то чтобы плохое качество кода, а заплатка тут, заплатка там, и местами вообще заплата на заплате. Но такова была политика (процесс разработки) Моторолы. На моей памяти рефакторинг проводился всего один раз. И только потом я осознал, насколько велико было качество дизайна (архитектуры), кода и управления им и восхитился. Ведь столько лет этот код жил, развивался, поддерживался совместно различными командами из Индии, Америки, Бразилии, России и др. и успешно продавался.


I>Ага, продавался пока не сдулся. Я всегда думал, что у моторолы вакханалия в коде, но теперь это можно сказать подтвердилось.

I>Похоже, все фичи они имплементили посредтсвом изучения, что позволяет код, а что нет Про пользователя думать было некогда
Ты не прав, P2K платформа была одна из самых качественных и гибких у мотороллы (посмотри сколько телефонов на ней было сделано). Единственный минус, она устарела. С юзабилити у моторов было всё хорошо, всегда всё под рукой и легко найти, в отличии от нокии к примеру.
Sic luceat lux!
Re[4]: Качество кода.
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 30.08.11 10:59
Оценка:
Здравствуйте, ry, Вы писали:

I>>Ага, продавался пока не сдулся. Я всегда думал, что у моторолы вакханалия в коде, но теперь это можно сказать подтвердилось.

ry>Просто-напросто кончился цикл жизни данного продукта. Но это уже проблемы менеджмента, никак не кода.

Проблемы менеджемента как раз проявляются тотально, в т.ч. и в коде. Если менеджменту насравть на код это ровно тоже самое, что заинтересованность в говнокоде. Есть такое являение: "Пока будут баги, у меня будет работа" Это пораженческие настроение и от такого руководителя/команды надо бежать без оглядки.

И то и другое проявляется в т.ч. в виде говнокода, а у говнкода основной эффект — окончание цикла жизни кода. Повторяю — основной !

I>>Похоже, все фичи они имплементили посредтсвом изучения, что позволяет код, а что нет Про пользователя думать было некогда

ry>По поводу юзабельности могу сказать следующее: на своей нокии, которая у меня уже 3,5 года, пути доступа к некоторым редко используемым фичам приходится искать (никак не запомню), в моторольских же телефонах такого вроде бы не было никогда. Но это, видимо, проблемы персональных предпочтений. Хотя вот к иФону вообще практически никаких претензий (у меня) — а какого качества там код?

Пока не знаю, айфон год лежал в тумбочке на работе, я им пользовался довольно часто, но себе так и не купил (забухал)
Re[4]: Качество кода.
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 30.08.11 11:00
Оценка: +1
Здравствуйте, Kernan, Вы писали:

I>>Ага, продавался пока не сдулся. Я всегда думал, что у моторолы вакханалия в коде, но теперь это можно сказать подтвердилось.

I>>Похоже, все фичи они имплементили посредтсвом изучения, что позволяет код, а что нет Про пользователя думать было некогда
K>Ты не прав, P2K платформа была одна из самых качественных и гибких у мотороллы (посмотри сколько телефонов на ней было сделано). Единственный минус, она устарела. С юзабилити у моторов было всё хорошо, всегда всё под рукой и легко найти, в отличии от нокии к примеру.

Я често не понимаю, где ты углядел юзабилити у моторов. Что за модель с P2K ? Может я такую знаю.
Re[5]: Качество кода.
От: Erop Россия  
Дата: 30.08.11 11:01
Оценка:
Здравствуйте, denisko, Вы писали:

D>Смотри, упрощенно, чтобы добавить новую фичу ты смотришь куда добавить (n_1 квантов времени), думаешь как (n_2 квантов времени), добавляешь (n_3). Если у тебя аккуратный и относительно понятный код без изысков, то n_3 самое большое, n_1,n_2 довольно малы. Если у тебя очень качественный код созданный ради качества кода, то очень часто n_3 действительно очень мало, а вот додуматься до способа, когда оно мало (n_2), и понять куда приспособить новую фичу (n_1) занимает очень много времени, так что суммарное время добавления может быть больше, чем в первом случае.


Ты, просто не тот код называешь качественным
Необоснованная заумность -- это, как раз недостаток!
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[4]: Качество кода.
От: Vlad_SP  
Дата: 30.08.11 11:08
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Клиент как правило не в курсе, что качество кода может быть разным или, как минимум, не понимает насколько это важно.


Клиент, как правило, не в курсе, что существует вообще какой-то там "код". (с) наблюдение из жизни
Re[4]: Качество кода.
От: LaptevVV Россия  
Дата: 30.08.11 11:08
Оценка:
Здравствуйте, netch80, Вы писали:

N>>>А зачем рассказывать про хороший код?

N>>>Для этого есть статистика (кстати, поэтому я рекомендовал бы провести голосование по этому поводу), а обсуждения по делу посвящены проблемам, а не тому, как всё хорошо. Поэтому о плохом говорят, а хорошее такого не требует.
LVV>>Требует!
LVV>>Ведь именно так рассуждают журналисты! Поэтому по ТВ — одна чернуха. Как говорил Задорнов: наши новости можно смотреть только под водку и не чокаясь!
LVV>>Хороший код — это пример для новичков — нужно его показывать!

N>Угу. Но вместе с ТЗ, разве не так? А это уже немного другой уровень рассмотрения.

Интересно, что про плохой код обычно кричат без всякого упоминания о ТЗ...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[5]: Качество кода.
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 30.08.11 11:12
Оценка:
Здравствуйте, Ikemefula, Вы писали:

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


I>>>Ага, продавался пока не сдулся. Я всегда думал, что у моторолы вакханалия в коде, но теперь это можно сказать подтвердилось.

I>>>Похоже, все фичи они имплементили посредтсвом изучения, что позволяет код, а что нет Про пользователя думать было некогда
K>>Ты не прав, P2K платформа была одна из самых качественных и гибких у мотороллы (посмотри сколько телефонов на ней было сделано). Единственный минус, она устарела. С юзабилити у моторов было всё хорошо, всегда всё под рукой и легко найти, в отличии от нокии к примеру.

I>Я често не понимаю, где ты углядел юзабилити у моторов. Что за модель с P2K ? Может я такую знаю.

Легендарный E398, L7 и т.п. их было много.
Sic luceat lux!
Re[5]: Качество кода.
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 30.08.11 11:12
Оценка:
Здравствуйте, Vlad_SP, Вы писали:

I>>Клиент как правило не в курсе, что качество кода может быть разным или, как минимум, не понимает насколько это важно.


V_S>Клиент, как правило, не в курсе, что существует вообще какой-то там "код". (с) наблюдение из жизни


Бывают наверняка и такие клиенты, мне правда не попадались. Правда почти все клиенты частенько продавливают решения которые дают профит в краткосрочной перспективе. Без учета кода это мягко говоря не самый лучший способ строить бизнес.
Re[6]: Качество кода.
От: Privalov  
Дата: 30.08.11 11:16
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>А что ты делал целую неделю ?


Говорю же — баг чинил.

На самом деле головняка хватало. Из-за тотального применения наследования там такие эффекты вылезали, что аж не по себе иногда становилось. Ну и размеры методов иногда впечатляли. А иногда весь forkflow вообще в единственный метод запихивали.
Re[6]: Качество кода.
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 30.08.11 11:22
Оценка:
Здравствуйте, Kernan, Вы писали:

I>>Я често не понимаю, где ты углядел юзабилити у моторов. Что за модель с P2K ? Может я такую знаю.

K>Легендарный E398, L7 и т.п. их было много.

Популярные девайсы были, да. Только багов было столько, что народ вечно с прошивками возился. Открой любой форум — как прошить, где прошить, какую прошивку брать и тд и тд.
"Не определяется телефон — попробуй почистить контакты"

Нокия того же времени была куда посильнее, уверяю.
Re[7]: Качество кода.
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 30.08.11 11:24
Оценка:
Здравствуйте, Privalov, Вы писали:

P>Говорю же — баг чинил.


P>На самом деле головняка хватало. Из-за тотального применения наследования там такие эффекты вылезали, что аж не по себе иногда становилось. Ну и размеры методов иногда впечатляли. А иногда весь forkflow вообще в единственный метод запихивали.


Если это один раз, то сойдёт за развлекуху
Re[7]: Качество кода.
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 30.08.11 11:32
Оценка:
Здравствуйте, Ikemefula, Вы писали:

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


I>>>Я често не понимаю, где ты углядел юзабилити у моторов. Что за модель с P2K ? Может я такую знаю.

K>>Легендарный E398, L7 и т.п. их было много.

I>Популярные девайсы были, да. Только багов было столько, что народ вечно с прошивками возился. Открой любой форум — как прошить, где прошить, какую прошивку брать и тд и тд.

I>"Не определяется телефон — попробуй почистить контакты"
Ни разу такого не видел. Возможно ты имеешь ввиду кастомные прошивки.

I>Нокия того же времени была куда посильнее, уверяю.

Если ты про смартфоны, то да.
Sic luceat lux!
Re: Качество кода.
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 30.08.11 11:49
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Не верю, что весь код — отстой. Иначе мы тут с вами не сидели бы...

LVV>Кто может привести примеры прекрасного качества кода?
LVV>Из жизни, а не из книжек.

Вообще говоря, вброс не очень. Subj для КСВ не годится. Лучше так: "Кто говнокодером еще не был ?" или "Кто не говнокодер ?"
Re: Качество кода.
От: Dym On Россия  
Дата: 30.08.11 12:08
Оценка: +1 :))) :)
LVV>Кто может привести примеры прекрасного качества кода?
Прекрасный код это код, который пишу я в текущий момент, все остальное — отстой, включая мой код, который я писал вчера .
Счастье — это Glück!
Re[5]: Качество кода.
От: ry Россия  
Дата: 30.08.11 12:46
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>>>Ага, продавался пока не сдулся. Я всегда думал, что у моторолы вакханалия в коде, но теперь это можно сказать подтвердилось.

ry>>Просто-напросто кончился цикл жизни данного продукта. Но это уже проблемы менеджмента, никак не кода.

I>Проблемы менеджемента как раз проявляются тотально, в т.ч. и в коде. Если менеджменту насравть на код это ровно тоже самое, что заинтересованность в говнокоде. Есть такое являение: "Пока будут баги, у меня будет работа" Это пораженческие настроение и от такого руководителя/команды надо бежать без оглядки.


Я плохо выразился. Под "проблемы менеджмента" имел в виду продуктовый менеджмент, не кода. У всякого продукта есть срок жизни, и всему наступает конец. Будь то программа, дом, дерево, сын или телефон. Телефон — это аппаратно-программный комплекс. И уж коли платформе пришёл кирдык, то сколько и как ни старайся продлить ей жизнь, лучше её вовремя прибить самому, а Моторола протянула с этим.

I>И то и другое проявляется в т.ч. в виде говнокода, а у говнкода основной эффект — окончание цикла жизни кода. Повторяю — основной !

Не согласен. Конечно, код может укорачивать жизненный цикл, но, думается, главным ограничителем жизни является востребованность продукта рынком. А говнокод просто может сыграть злую шутку с его автором при наличии конкурентного продукта (а может и не сыграть).
Re[6]: Качество кода.
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 30.08.11 12:50
Оценка: :)
Здравствуйте, ry, Вы писали:

I>>Проблемы менеджемента как раз проявляются тотально, в т.ч. и в коде. Если менеджменту насравть на код это ровно тоже самое, что заинтересованность в говнокоде. Есть такое являение: "Пока будут баги, у меня будет работа" Это пораженческие настроение и от такого руководителя/команды надо бежать без оглядки.


ry>Я плохо выразился. Под "проблемы менеджмента" имел в виду продуктовый менеджмент, не кода. У всякого продукта есть срок жизни, и всему наступает конец. Будь то программа, дом, дерево, сын или телефон. Телефон — это аппаратно-программный комплекс. И уж коли платформе пришёл кирдык, то сколько и как ни старайся продлить ей жизнь, лучше её вовремя прибить самому, а Моторола протянула с этим.


I>>И то и другое проявляется в т.ч. в виде говнокода, а у говнкода основной эффект — окончание цикла жизни кода. Повторяю — основной !

ry>Не согласен. Конечно, код может укорачивать жизненный цикл, но, думается, главным ограничителем жизни является востребованность продукта рынком. А говнокод просто может сыграть злую шутку с его автором при наличии конкурентного продукта (а может и не сыграть).

Говнокод всегда удорожает разработку. Всегда. И всегда это становится причиной окончания цикла жизни кода. Ты можешь хотеть юзать платформу год-два три, но денег больше нет
Дорогая разработка софта — значит на разработку железа денег будет меньше. Все очень просто.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.