mbla: (Default)
[personal profile] mbla
У наших студентов на пятом курсе полугодовая стажировка.

Найти стаж обычно просто - всем хочется получить готового инженера по дешёвой цене - платят стажёрам, естественно, мало.

Обычно ребят берут разработчиками на конкретные проекты.

После окончания стажировки - защита - в комиссии кто-то от нас и руководитель стажа "с места". Иногда руководитель с места по тем или иным причинам отсутствует и вместо себя присылает оценочную бумагу.

Сегодня у меня "защищал" свою работу мальчик, у которого страсть - интеллектуальные компьютерные игры. Ему удалось найти соответствующий стаж. В компании, которую 5 лет назад организовали двое братьев - совсем молодые ребята - были у них какие-то идеи, взяли кредиты. Сейчас в компании шестеро, естественно, друзья-сокурсники. Такие маленькие фирмы, по крайней мере во Франции, всегда дружеские тусовки.

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

Первое - понятное - функция должна умещаться на экране - не умещается - разбивай.

А вот второе меня поразило - комментарии запрещены. Идея в том, что комментарии позволяют писать нечётко, - дескать, прочтёт человек комментарий и всё поймёт, а на самом деле, ежели код хорошо написан, он должен быть полностью понятен при чтении с листа.

Это правило, естественно, совершенно противоречит правилам, которым учат на первом курсе, когда за отсутствие комментариев аж оценку снижают.

Как по-вашему?

Date: 2005-09-23 08:35 am (UTC)
From: [identity profile] ksl-aka-serg.livejournal.com
Все комменты не читал, т.к. мало времени, но бегло пробежавшись, увидел, что большинство тебе ответивших против комментариев.
Выскажу и я свое мнение. Я - программист с 25-ти летним стажем. Любые формальные правила в нашем деле вредны. (Я против использования goto, но иногда его неприменение сильно ухудшает прозрачность кода.) Что касается длины функций, то да, чем короче, тем понятней, но опять же, возможны случаи, когда прозрачность при разбиении потеряется. Тогда данное правило вредно. Попробуй напиши функцию пирамидальной сортировки в один экран!

Что касается комментариев, то это полный бред. Не писать комментарии можно только в том случае, если команда очень маленькая - полукустарная, во-первых, во-вторых, абсолютно отсутствует текучка, в-третьих, жизненный цикл данного программного обеспечения сильно ограничен по времени. Ну, кого через пять лет будет интересовать код давно устаревшей игрушки?
Если же мы говорим о промышленном программировании, то комментарии необходимы.
Во-первых, если говорить о таком языке как С++, то он не очень прозрачен. Даже при очень высокой квалификации программиста, не все конструкции доступны для легкого понимания. Например, шаблоны.
Промышленное программирование подразумевает, что код должен быть сопровождаемым и легко модифицируемым. Т.е. пройдет несколько лет, и возможно, читать этот код придется другому человеку, и не факт, что код тот писал очень прозрачно пишущий программист.
В том программном продукте который мы сейчас выпускаем имеется некий engin, написанный мной со товарищи в количестве 5-ти человек аж в 91-м году. Из той команды остался только я один. Изредка возникает потребность в модификации кода. Комментарии даже в тех кусках, которые я писал сам, сильно убыстряют вспоминание.
Еще про сопровождение. В 87-м году мне вручили на сопровождение код, который писала женщина, уходящая в декрет. Во тогда-то я понял о чем думает беременная женщина. :-) О чем угодно, но только не о структуре программы. Нанайский стиль программирования: о чем думаю, то и кодирую. Слава богу, она была дисциплинированной девочкой, и оставила довольно много комментариев.
Т.е. не всегда мы имеем дело с кодом, написанным супер-программистом, пишущим прозрачно. Ладно, девочка та была несчастным случаем. В середине 90-х я нанял на работу бывшего доцента с кафедры высшей математики Бауманки. Гениальный человек! Необыкновенная продуктивность! Эффективнейший код! (Тогда компьютеры были существенно медленнее, а задачи-то у нас реального времени.) Но код, боже! Какой он писал непрозрачный код! Пришлось пригрозить увольнением, что надо писать комментарии.

Мастер Йода, точнее Йодан, в своей книге про искусство структурного программирования писал, что оптимальное соотношение кода к комментам должно быть 5:1. Йоду еще никто не отменял, и те принципы, которые он сформулировал, живы до сих пор.

Но справедливости ради надо заметить, что писать грамотные комментарии – не меньшее искусство, чем прозрачный код. Думаю ты помнишь ту историю, когда один американский супер-программист в функции сделал всего лишь один единственный комментарий: некая последовательность букв и цифр, и укатил в отпуск. Надо же такому было случиться, что в этот момент срочно потребовалась модификация. Весь отдел голову сломал над смыслом коммента. Оказалось, что эта функция была написана в день рождения Бетховена, что и отметил юный гений. По возвращению из отпуска он был уволен.

Date: 2005-09-23 08:42 am (UTC)
From: [identity profile] ksl-aka-serg.livejournal.com
Йода, конечно же пербарщивает. Сейчас такое колличество комментов не нужно.

Date: 2005-09-23 05:20 pm (UTC)
From: [identity profile] mbla.livejournal.com
Ну, ясно, что жёсткие правила не нужны. Дело не в этом, насколько я понимаю, с точки зрения этих ребят у многих программистов имеется привычка писать поганый код, комментировать (кстати, часто тоже погано) и считать, что всё ок. Логика в их рассуждениях есть. Очень значительная часть кодов написана мерзко, ими продолжают пользоваться, надстраивают новыми, и это всё очень некрасиво. Они как раз считают, что новому человеку проще читать чёткий ясный разбитый на короткие функции код гораздо легче, чем откомментированный и плохо написанный. И что отсутствие комментариев заставляет писать чётко.

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

Date: 2005-09-24 08:37 am (UTC)
From: [identity profile] afrolover.livejournal.com
а выбор того или иного алгоритма - он тоже всегда прозрачен?

Date: 2005-09-25 08:33 pm (UTC)
From: [identity profile] mbla.livejournal.com
Аа. Вот такой комментарий (почему выбрал) очень бы хотелось видеть. Но как раз обычно не встречаешь. Стандартные комментарии - это зачастую отписки.

Date: 2005-09-24 08:36 am (UTC)
From: [identity profile] afrolover.livejournal.com
полностью согласен с вышестоящим товарищем.
гав!

Date: 2005-09-25 08:34 pm (UTC)
From: [identity profile] mbla.livejournal.com
Гав-гав!

January 2023

S M T W T F S
1 234567
89101112 13 14
151617 1819 2021
222324252627 28
293031    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 26th, 2025 04:03 pm
Powered by Dreamwidth Studios