Качество кода.
От: LaptevVV Россия  
Дата: 30.08.11 05:38
Оценка:
Я довольно давно на РСДН.
И как-то не припомню, чтобы был хоть один пост о хорошем качестве кода.
Как правило, посты следующего содержания:

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

Не верю, что весь код — отстой. Иначе мы тут с вами не сидели бы...
Кто может привести примеры прекрасного качества кода?
Из жизни, а не из книжек.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: Качество кода.
От: Privalov  
Дата: 30.08.11 05:51
Оценка: 2 (1)
Здравствуйте, LaptevVV, Вы писали:

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

LVV>И как-то не припомню, чтобы был хоть один пост о хорошем качестве кода.

Был один
Автор: Privalov
Дата: 14.04.05
, по крайней мере.

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

LVV>Из жизни, а не из книжек.

Давно было, код не сохранился. Но представь себе код на древнем Basic, где нет ни одной строчки спагетти. Я к тому проекту на заключительных этапах присоединился, и в одиночку пару лет потом поддерживал.
Re: Качество кода.
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 30.08.11 06:36
Оценка: +1
Здравствуйте, LaptevVV, Вы писали:

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

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

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

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

А зачем рассказывать про хороший код?
Для этого есть статистика (кстати, поэтому я рекомендовал бы провести голосование по этому поводу), а обсуждения по делу посвящены проблемам, а не тому, как всё хорошо. Поэтому о плохом говорят, а хорошее такого не требует.

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

LVV>Из жизни, а не из книжек.

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

Так что я (повторюсь) устроил бы тут голосование. Дать пяток уровней качества — от кошмара до идеала — и вопрос типа "то с чем вы работаете сейчас — к чему ближе?"
The God is real, unless declared integer.
Re: Качество кода.
От: Alexéy Sudáchen Чили  
Дата: 30.08.11 06:45
Оценка: 1 (1)
Здравствуйте, LaptevVV, Вы писали:

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

LVV>И как-то не припомню, чтобы был хоть один пост о хорошем качестве кода.

Русский программист уже давно (как минимум среди своих) стало нарицательным =)
Re[2]: Качество кода.
От: LaptevVV Россия  
Дата: 30.08.11 06:59
Оценка:
Здравствуйте, netch80, Вы писали:

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

N>Для этого есть статистика (кстати, поэтому я рекомендовал бы провести голосование по этому поводу), а обсуждения по делу посвящены проблемам, а не тому, как всё хорошо. Поэтому о плохом говорят, а хорошее такого не требует.
Требует!
Ведь именно так рассуждают журналисты! Поэтому по ТВ — одна чернуха. Как говорил Задорнов: наши новости можно смотреть только под водку и не чокаясь!
Хороший код — это пример для новичков — нужно его показывать!
LVV>>Кто может привести примеры прекрасного качества кода?
LVV>>Из жизни, а не из книжек.
N>Я могу их из своей практики привести хоть тысячу, но не вижу смысла. Во-первых, что это прекрасный код — то есть выполняет ровно свою задачу, чёток, понятен и пригоден к развитию — пойму только я и коллеги, остальные в лучшем случае пожмут плечами. Во-вторых, он соседствует в одном и том же проекте с кошмарами, которые нельзя выбросить только потому, что они доведены до достаточно рабочего состояния. В-третьих, такой код часто требовал больше усилий, чем надо бы (есть у меня в подчинённых, например, перфекционист, который никогда не может выдержать сроки).
1. Ну, можно ведь не просто код, а небольшие пояснения дать, и объяснить в чем красота. А иначе КАК учиться хорошему кодированию?
2. Не выдерживание сроков может говорить о том, что сроки просто занижены. Расчитаны на написание быдлокода, а не качественного кода. И никто об этом не задумывается.
N>Так что я (повторюсь) устроил бы тут голосование. Дать пяток уровней качества — от кошмара до идеала — и вопрос типа "то с чем вы работаете сейчас — к чему ближе?"
Возможно, но я пока не могу четко сформулировать.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: Качество кода.
От: ry Россия  
Дата: 30.08.11 07:02
Оценка: 6 (2) +1
Здравствуйте, LaptevVV, Вы писали:

LVV>И как-то не припомню, чтобы был хоть один пост о хорошем качестве кода.

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

Я могу. Рассказать. Не показать.
Несколько лет был на поддержке кода пользовательского интерфейса моторольских телефонов. Когда только вообще впервые увидел моторольский код, ужаснулся, но не от качества (что я понимал тогда в этом), а от его объёма — и понял, какой же фигнёй занимался до этого. И только ленивый не ругался на его качество. То ли под воздействием таких разговоров, то ли в силу возрастающего профессионализма я стал считать, что могу писать код лучше. Ещё некоторое время спустя я увидел (стал различать), что это не то чтобы плохое качество кода, а заплатка тут, заплатка там, и местами вообще заплата на заплате. Но такова была политика (процесс разработки) Моторолы. На моей памяти рефакторинг проводился всего один раз. И только потом я осознал, насколько велико было качество дизайна (архитектуры), кода и управления им и восхитился. Ведь столько лет этот код жил, развивался, поддерживался совместно различными командами из Индии, Америки, Бразилии, России и др. и успешно продавался.
Re[3]: Качество кода.
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 30.08.11 07:06
Оценка:
Здравствуйте, LaptevVV, Вы писали:

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

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

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


LVV>1. Ну, можно ведь не просто код, а небольшие пояснения дать, и объяснить в чем красота. А иначе КАК учиться хорошему кодированию?

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

Он сам называл сроки. Ладно, это тема отдельная.

N>>Так что я (повторюсь) устроил бы тут голосование. Дать пяток уровней качества — от кошмара до идеала — и вопрос типа "то с чем вы работаете сейчас — к чему ближе?"

LVV>Возможно, но я пока не могу четко сформулировать.

Аналогично. Ладно, ещё подумаем...
The God is real, unless declared integer.
Re: Качество кода.
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 30.08.11 08:00
Оценка:
Здравствуйте, LaptevVV, Вы писали:

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

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

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

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

Очень мало контор уделяет внимание качеству кода.
Re[2]: Качество кода.
От: denisko http://sdeniskos.blogspot.com/
Дата: 30.08.11 08:51
Оценка: 3 (1) +1
Здравствуйте, Ikemefula, Вы писали:

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


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

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

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

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

I>Очень мало контор уделяет внимание качеству кода.

А вот интересно, нужно ли оно вообще? По-моему опыту, дольше всего живут и лучше всего модифицируются приложения написанные довольно аккуратно, но _без_ излишнего внимания к качеству кода, реюзабельности, оопшности и.т.д. Если качество кода ставится во главу угла, то во-первых, получается процесс ради процесса, а во-вторых, если на входе и есть что-то, то оно настолько сделано через задницу, что использовать его всем кроме автора (или небольшой групп ы авторов) соверешенно невозможно, причем модификацию и поддержку тоже необходимо осуществлять исключительно через задницу.
<Подпись удалена модератором>
Re[3]: Качество кода.
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 30.08.11 08:57
Оценка:
Здравствуйте, denisko, Вы писали:

I>>Очень мало контор уделяет внимание качеству кода.

D>А вот интересно, нужно ли оно вообще? По-моему опыту, дольше всего живут и лучше всего модифицируются приложения написанные довольно аккуратно, но _без_ излишнего внимания к качеству кода, реюзабельности, оопшности и.т.д.

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

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


"модификацию и поддержку тоже необходимо осуществлять исключительно через задницу" — собственно качество кода и необходимо для устранения этой проблемы
Re[2]: Качество кода.
От: Vlad_SP  
Дата: 30.08.11 09:03
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Очень мало контор уделяет внимание качеству кода.


И это правильно. Клиент платит за продукт, решающий его проблемы, а не за мифическое "качество кода". Поэтому качество кода и находится на соответствующем месте в иерархии ценностей компании... что тут удивительного?
Есть, безусловно, некоторое количество компаний, которые продают исходники. Вот тут "качеству кода" уделяется внимание, — ну, так этот код и есть их продаваемый продукт. Нет?
Re[2]: Качество кода.
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 30.08.11 09:06
Оценка:
Здравствуйте, ry, Вы писали:

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


Ага, продавался пока не сдулся. Я всегда думал, что у моторолы вакханалия в коде, но теперь это можно сказать подтвердилось.
Похоже, все фичи они имплементили посредтсвом изучения, что позволяет код, а что нет Про пользователя думать было некогда
Re: Качество кода.
От: Vintik_69 Швейцария  
Дата: 30.08.11 09:16
Оценка:
Здравствуйте, LaptevVV, Вы писали:

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


Помню, в квейках, вроде, хороший код.

LVV>Из жизни, а не из книжек.
Re[3]: Качество кода.
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 30.08.11 09:16
Оценка: +1
Здравствуйте, Vlad_SP, Вы писали:

I>>Очень мало контор уделяет внимание качеству кода.


V_S>И это правильно. Клиент платит за продукт, решающий его проблемы, а не за мифическое "качество кода". Поэтому качество кода и находится на соответствующем месте в иерархии ценностей компании... что тут удивительного?


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

V_S>Есть, безусловно, некоторое количество компаний, которые продают исходники. Вот тут "качеству кода" уделяется внимание, — ну, так этот код и есть их продаваемый продукт. Нет?


Нет. Стоимость последующих изменений напрямую зависит от качетсва кода. Я занимался несколькими длинными проектами, которые пришлось буквально воскрешать.
Все такие проекты останавливаются в основном из за того, что стоимость изменений становится слишком высокой.
Выход один — вложить кучу денег и начать новый проект или вложить кучу денег и воскресить.
Качество кода позволяет увеличить цикл жизни кода — внимание — в разы за счет снижения стоимости разработки.

Теперь вопрос — является ли стоимость изменения критичной для клиента который платит за продукт решающий его проблемы ?
Re[2]: Качество кода.
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 30.08.11 09:20
Оценка:
Здравствуйте, Alexéy Sudáchen, Вы писали:

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

LVV>>И как-то не припомню, чтобы был хоть один пост о хорошем качестве кода.

AS>Русский программист уже давно (как минимум среди своих) стало нарицательным =)


Есть поговорка: "некогда пилу точить, пилить надо". Как раз про русских
Re[4]: Качество кода.
От: denisko http://sdeniskos.blogspot.com/
Дата: 30.08.11 09:21
Оценка:
Здравствуйте, Ikemefula, Вы писали:

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


I>>>Очень мало контор уделяет внимание качеству кода.

D>>А вот интересно, нужно ли оно вообще? По-моему опыту, дольше всего живут и лучше всего модифицируются приложения написанные довольно аккуратно, но _без_ излишнего внимания к качеству кода, реюзабельности, оопшности и.т.д.

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

Аккуратно, когда написан ради того, чтобы решить задачу с соблюдением простых правил типа.
1. Читабельные имена функций и переменных.
2. Есть комментарии, там где это необходимо.
3. Нет одной и той же простыни более двух раз с разными названиями. Копипаста держится в разумных пределах.
4. Нет магических чисел и переменных судьбы.
5. Нет применения модных приемов (типа идиотские схемы наследования в стиле Шеридана) только ради того, чтобы применить модные приемы.


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


I>"модификацию и поддержку тоже необходимо осуществлять исключительно через задницу" — собственно качество кода и необходимо для устранения этой проблемы

Смотри, упрощенно, чтобы добавить новую фичу ты смотришь куда добавить (n_1 квантов времени), думаешь как (n_2 квантов времени), добавляешь (n_3). Если у тебя аккуратный и относительно понятный код без изысков, то n_3 самое большое, n_1,n_2 довольно малы. Если у тебя очень качественный код созданный ради качества кода, то очень часто n_3 действительно очень мало, а вот додуматься до способа, когда оно мало (n_2), и понять куда приспособить новую фичу (n_1) занимает очень много времени, так что суммарное время добавления может быть больше, чем в первом случае.
<Подпись удалена модератором>
Re[3]: Качество кода.
От: ry Россия  
Дата: 30.08.11 09:59
Оценка:
Здравствуйте, Ikemefula, Вы писали:

ry>>Ведь столько лет этот код жил, развивался, поддерживался и успешно продавался.


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

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

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

По поводу юзабельности могу сказать следующее: на своей нокии, которая у меня уже 3,5 года, пути доступа к некоторым редко используемым фичам приходится искать (никак не запомню), в моторольских же телефонах такого вроде бы не было никогда. Но это, видимо, проблемы персональных предпочтений. Хотя вот к иФону вообще практически никаких претензий (у меня) — а какого качества там код?
Re[5]: Качество кода.
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 30.08.11 10:04
Оценка:
Здравствуйте, denisko, Вы писали:

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

D>Аккуратно, когда написан ради того, чтобы решить задачу с соблюдением простых правил типа.
D>1. Читабельные имена функций и переменных.
D>2. Есть комментарии, там где это необходимо.

комментарии чаще всего указывают на проблемные места

D>3. Нет одной и той же простыни более двух раз с разными названиями. Копипаста держится в разумных пределах.


я бы сказал "двух и более раз"

D>4. Нет магических чисел и переменных судьбы.

D>5. Нет применения модных приемов (типа идиотские схемы наследования в стиле Шеридана) только ради того, чтобы применить модные приемы.

всех 5 пунктов сильно недостаточно

I>>"модификацию и поддержку тоже необходимо осуществлять исключительно через задницу" — собственно качество кода и необходимо для устранения этой проблемы

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

Это чуток упрощенно.

Некачественный код это целая куча признаков, отдельным сообщением запощу

А Некачественный

1 Сначла мне надо разобраться в имеющемся коде и понять что он делает, пару раз продебажить и тд
2 найти местА (sic!) где нужно внести изменения
3 внести изменения — долго, но меньше чем п.1 и п.2 + повторить п.2 т.к. не всегда очевидно что и где надо менять
4 проверить все смежные места, если вдруг менялось поведение общей функции и повторить п. 1..3
5 в некачественном коде всегда возникает кучка багов, для каждого повторить 1..5

Б Качественным кодом

1 Прочитать имеющийся коде — этого достаточно что бы понять, что к чему
2 найти местО (sic!) где нужно внести изменени — как правило одно или дизайн подсказывает где такие места
3 внести изменения — очень быстро
4 проверить все смежные места — их как правило очень мало
5 в качественном коде баги возникают достаточно редко, для каждого повторить 1..5

Как правило, разница между А и Б настолько велика, что окупает усилия по улучшению кода.

Единственный нюанс, это выбор момента, когда нужно улучшать код Одноразовый код однозначно улучшать не стоит. Код в который придется лазить постоянно, улучшать нужно постоянно.
Re: Качество кода.
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 30.08.11 10:06
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Из жизни, а не из книжек.


Мне TeX нравится. Ну а так я не очень строго отношусь к коду, всегда готов с ним работать
Re[4]: Качество кода.
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 30.08.11 10:13
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>>>Очень мало контор уделяет внимание качеству кода.

D>>А вот интересно, нужно ли оно вообще? По-моему опыту, дольше всего живут и лучше всего модифицируются приложения написанные довольно аккуратно, но _без_ излишнего внимания к качеству кода, реюзабельности, оопшности и.т.д.

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

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