вопрос практикующим программистам
Sep. 22nd, 2005 12:21 amУ наших студентов на пятом курсе полугодовая стажировка.
Найти стаж обычно просто - всем хочется получить готового инженера по дешёвой цене - платят стажёрам, естественно, мало.
Обычно ребят берут разработчиками на конкретные проекты.
После окончания стажировки - защита - в комиссии кто-то от нас и руководитель стажа "с места". Иногда руководитель с места по тем или иным причинам отсутствует и вместо себя присылает оценочную бумагу.
Сегодня у меня "защищал" свою работу мальчик, у которого страсть - интеллектуальные компьютерные игры. Ему удалось найти соответствующий стаж. В компании, которую 5 лет назад организовали двое братьев - совсем молодые ребята - были у них какие-то идеи, взяли кредиты. Сейчас в компании шестеро, естественно, друзья-сокурсники. Такие маленькие фирмы, по крайней мере во Франции, всегда дружеские тусовки.
Так вот студент мой, страшно расстроенный тем, что его не оставили - нет у них денег ещё одному человеку платить - рассказал, что "отцы-основатели" с самого начала установили несколько абсолютно жёстких правил программирования.
Первое - понятное - функция должна умещаться на экране - не умещается - разбивай.
А вот второе меня поразило - комментарии запрещены. Идея в том, что комментарии позволяют писать нечётко, - дескать, прочтёт человек комментарий и всё поймёт, а на самом деле, ежели код хорошо написан, он должен быть полностью понятен при чтении с листа.
Это правило, естественно, совершенно противоречит правилам, которым учат на первом курсе, когда за отсутствие комментариев аж оценку снижают.
Как по-вашему?
Найти стаж обычно просто - всем хочется получить готового инженера по дешёвой цене - платят стажёрам, естественно, мало.
Обычно ребят берут разработчиками на конкретные проекты.
После окончания стажировки - защита - в комиссии кто-то от нас и руководитель стажа "с места". Иногда руководитель с места по тем или иным причинам отсутствует и вместо себя присылает оценочную бумагу.
Сегодня у меня "защищал" свою работу мальчик, у которого страсть - интеллектуальные компьютерные игры. Ему удалось найти соответствующий стаж. В компании, которую 5 лет назад организовали двое братьев - совсем молодые ребята - были у них какие-то идеи, взяли кредиты. Сейчас в компании шестеро, естественно, друзья-сокурсники. Такие маленькие фирмы, по крайней мере во Франции, всегда дружеские тусовки.
Так вот студент мой, страшно расстроенный тем, что его не оставили - нет у них денег ещё одному человеку платить - рассказал, что "отцы-основатели" с самого начала установили несколько абсолютно жёстких правил программирования.
Первое - понятное - функция должна умещаться на экране - не умещается - разбивай.
А вот второе меня поразило - комментарии запрещены. Идея в том, что комментарии позволяют писать нечётко, - дескать, прочтёт человек комментарий и всё поймёт, а на самом деле, ежели код хорошо написан, он должен быть полностью понятен при чтении с листа.
Это правило, естественно, совершенно противоречит правилам, которым учат на первом курсе, когда за отсутствие комментариев аж оценку снижают.
Как по-вашему?
no subject
Date: 2005-09-23 08:35 am (UTC)Выскажу и я свое мнение. Я - программист с 25-ти летним стажем. Любые формальные правила в нашем деле вредны. (Я против использования goto, но иногда его неприменение сильно ухудшает прозрачность кода.) Что касается длины функций, то да, чем короче, тем понятней, но опять же, возможны случаи, когда прозрачность при разбиении потеряется. Тогда данное правило вредно. Попробуй напиши функцию пирамидальной сортировки в один экран!
Что касается комментариев, то это полный бред. Не писать комментарии можно только в том случае, если команда очень маленькая - полукустарная, во-первых, во-вторых, абсолютно отсутствует текучка, в-третьих, жизненный цикл данного программного обеспечения сильно ограничен по времени. Ну, кого через пять лет будет интересовать код давно устаревшей игрушки?
Если же мы говорим о промышленном программировании, то комментарии необходимы.
Во-первых, если говорить о таком языке как С++, то он не очень прозрачен. Даже при очень высокой квалификации программиста, не все конструкции доступны для легкого понимания. Например, шаблоны.
Промышленное программирование подразумевает, что код должен быть сопровождаемым и легко модифицируемым. Т.е. пройдет несколько лет, и возможно, читать этот код придется другому человеку, и не факт, что код тот писал очень прозрачно пишущий программист.
В том программном продукте который мы сейчас выпускаем имеется некий engin, написанный мной со товарищи в количестве 5-ти человек аж в 91-м году. Из той команды остался только я один. Изредка возникает потребность в модификации кода. Комментарии даже в тех кусках, которые я писал сам, сильно убыстряют вспоминание.
Еще про сопровождение. В 87-м году мне вручили на сопровождение код, который писала женщина, уходящая в декрет. Во тогда-то я понял о чем думает беременная женщина. :-) О чем угодно, но только не о структуре программы. Нанайский стиль программирования: о чем думаю, то и кодирую. Слава богу, она была дисциплинированной девочкой, и оставила довольно много комментариев.
Т.е. не всегда мы имеем дело с кодом, написанным супер-программистом, пишущим прозрачно. Ладно, девочка та была несчастным случаем. В середине 90-х я нанял на работу бывшего доцента с кафедры высшей математики Бауманки. Гениальный человек! Необыкновенная продуктивность! Эффективнейший код! (Тогда компьютеры были существенно медленнее, а задачи-то у нас реального времени.) Но код, боже! Какой он писал непрозрачный код! Пришлось пригрозить увольнением, что надо писать комментарии.
Мастер Йода, точнее Йодан, в своей книге про искусство структурного программирования писал, что оптимальное соотношение кода к комментам должно быть 5:1. Йоду еще никто не отменял, и те принципы, которые он сформулировал, живы до сих пор.
Но справедливости ради надо заметить, что писать грамотные комментарии – не меньшее искусство, чем прозрачный код. Думаю ты помнишь ту историю, когда один американский супер-программист в функции сделал всего лишь один единственный комментарий: некая последовательность букв и цифр, и укатил в отпуск. Надо же такому было случиться, что в этот момент срочно потребовалась модификация. Весь отдел голову сломал над смыслом коммента. Оказалось, что эта функция была написана в день рождения Бетховена, что и отметил юный гений. По возвращению из отпуска он был уволен.
no subject
Date: 2005-09-23 08:42 am (UTC)no subject
Date: 2005-09-23 05:20 pm (UTC)я не учу программированию, слава богу, я учу алгоритмике и логике. И мне кажется, что лучший возможный комментарий - это алгоритм. Но естественно, есть языки. предельно неприспособленные для писания алгоритмов. Я бы тогда комментировала именно алгоритмически.
no subject
Date: 2005-09-24 08:37 am (UTC)no subject
Date: 2005-09-25 08:33 pm (UTC)no subject
Date: 2005-09-24 08:36 am (UTC)гав!
no subject
Date: 2005-09-25 08:34 pm (UTC)