Меня всегда удивляло, что код комментируют так сухо и бездушно. Привожу пример моих комментов одной VBA-процедуры, написанных в разные моменты времени:
Первая версия:
/* Сделано через жопу. Прошу прощения у того, кто будет дорабатывать — меня заставили сделать именно так. */
Исправленная версия:
/* Cобрался с силами и исправил код так, чтобы он выглядел более логичным и читаемым. Концептуально он остался жопой, но теперь стал больше похож на аппетитную женскую попку, чем на суровую мужицкую задницу. */
Комментирование — занятие крайне интересное и творческое. Сделайте немного интереснее жизнь человеку, которому придётся потом разбираться в вашем коде!
В своей деятельности я придерживаюсь инженерного подхода, а не научного. Но вот сомнения стали одолевать...
Лет пять назад выпала мне халтурка — написать парсер не сильно прямого языка — объектно-ориентированного расширения SQL. Порекомендовали меня одной конторе, поскольку их штатный программер просидел над этим делом год, нарисовал много схем и, доказав, что это контекстно-зависимая и не LR грамматика, заявил, что быстро написать парсер — дело неподъемное.
Я не стал научно доказывать возможность или невозможность, выкинул ANTLR, взял старый добрый bison написал на коленке грамматику, добавил ручками переключение контекстов... Неделя работ. Остальные два месяца занимался стилем форматирования выходного файла.
А потом задумался. Штатный программер получил никак не меньше 15000 баксов, и работа осталась "неиспорченной". Такую работу можно было еще работать и работать. А я, как урод, решил проблему за жалкие 2 штуки. Ну и кто после этого дурак?
Есть у нас один старый сервак, единственное обслуживание которого долгие годы заключалось в чистке сжатым воздухом и пылесосом. Недавно понадобилось сделать апгрейд системы объектного дистанционного контроля, которой и заведовал этот сервер. Как водится, пароль к нему за давностью лет забыли почти все, кроме одного парня — в армии шифровальщиком был. Звоним, спрашиваем:
— Привет! Дело срочное! Пароль на Жужу (имя сервера) помнишь? — (моментально) 3520485254. — Спасибо!.. (Минутная пауза). Слушай, что за число знакомое? — Количество экспы на 99 уровне в Diablo II.
В давние времена, когда ZX Spectrum был далеко не у каждого, мой однокурсник собрал по схеме из популярного журнала компьютер «Специалист». На заказ печатной платы в Москве денег у него не хватило, поэтому он иголкой в листе картона натыкал дырочек под выводы микросхем и распаял схему с обратной стороны кусочками провода МГТФ. Включил — не работает. Бедняга дважды проверил монтаж, ошибки не нашел и принёс его мне для отладки.
Увидев порождение настолько адского трудолюбия, я живо представил себе грядущую бессонную ночь и со вздохом включил осциллограф. Через пять минут неисправность была найдена — виновником оказался бракованный конденсатор в цепи видеовыхода, а остальная схема исправно работала!
Стоит ли упоминать, что 8-килобайтную прошивку BIOS'a мой приятель вручную набрал в шестнадцатеричных кодах на программаторе с клавиатурой от старого калькулятора?
Как-то раз, будучи в командировке, на территории заказчика отлаживал я работу одной несложной программки. Где-то глубоко в ней скрылся очень неприятный баг. Времени на отладку было немного, бегал я целыми днями в мыле.
Ситуацию ухудшал неприятный тип — начальник отдела, в котором я и устанавливал эту прогу. Умом был не силён, мышкой еле шевелил, да и вообще не очень понимал, для чего ему сдалась эта программа, однако под давлением сверху всё время капал мне на мозги фразой «когда будет готово?»
В один день моя расшатанная дебаггингом нервная система не выдержала — в ответ начальнику отдела была выдана фраза, после которой он долго боялся меня о чём-либо спрашивать:
— В данный момент прикладное программное обеспечение для сбора информации через коммутируемый канал оператора телефонной связи находится на стадии отладки программного кода, вследствие чего работоспособность его ограничена и полноценное функционирование не может быть обеспечено. В данный момент нашими специалистами ведётся работа по нахождению несоответствия в работе программного кода — как только данная проблема будет решена, я обязательно поставлю Вас в известность.
У мобильных игр иногда появляются моды — невероятно, но факт. Чаще всего моддеры меняют графику, оставляя уровни без изменений. Например: Игра наподобие King's Bounty — Heroes III Mobile. Средней руки платформер — «Петька и Василий Иванович спасают галактику».
Хотя мод — это признак любви к игре, начальство с моддерством борется, как с пиратством. Понять его можно: корявая моддерская графика (а тем более плагиат из других игр) дискредитирует контору. Впрочем, бывают моды и не такие.
Однажды нашу игру (полустратегию, полу-RPG) перевели на китайский. Впечатляет один только список препятствий, стоявших перед хакером: 1. В игре тексты выводились самодельным шрифтом (не столько для красоты, сколько для технологичности). Все операторы вывода моддер старательно заменил на стандартный шрифт телефона. Выглядело это, конечно, коряво, дизайн окошек «поплыл» — впрочем, китайцам лучше знать. 2. Тексты были в собственной однобайтовой кодировке — он добавил второй текстовый ресурс, написанный Юникодом. 3. Программа обфусцирована, а у картинок обрезаны заголовки. Исходников у него, конечно же, не было.
Начальство попыталось пресечь и такое моддерство - впрочем, резонно остановилось. Такого хакера, надо полагать, не остановят никакие преграды.
Однажды я проходил собеседование на должность программиста. HR-менеджер в числе прочего спросила: «Как вы начали программировать?» Никогда об этом не задумывался, но всё-таки вспомнил.
В самом начале девяностых я учился классе в пятом и захотел себе компьютер для игрушек. Жили мы в то время небогато, родители такую покупку бы не потянули — на компьютер копил я сам, долго и упорно подрабатывая по мелочи.
Наконец красавец-компьютер был куплен. 48 Кбайт ОЗУ и процессор Z80 — это был всем известный ZX Spectrum. Подразумевалось, что дисплеем должен служить телевизор, а в качестве внешнего накопителя использоваться кассетный магнитофон. Вооружившись паяльником, к телевизору я «спектрум» подключил , а вот с магнитофоном повезло меньше — его не было. Свовсем.
Все игры были записаны на кассеты — загрузить их было нельзя, а играть-то хотелось. Пришлось писать игрушки самому — совсем простенькие, зато свои!
Каникулы теперь у меня выглядели следующим образом: полдня пишу игру, полдня играю, а вечером мама, вернувшись с работы, вырубает машину и тем самым уничтожает все труды. Следующим утром цикл повторялся.
Если же я не успевал дописать игру или результат выходил уж очень интересным, листинг «сохранялся» на бумагу при помощи ручки и с утра набирался заново. Частенько я замечал, что процесс написания стал интереснее самих игр!
Когда я был молод и горяч, довелось мне поработать админом-эникейщиком.
Рабочий день в разгаре, я беру очередной уровень в «линейке». По законам жанра в кабинет заходит начальник — подполковник в отставке — и застаёт меня за этим недостойным занятием.
— Ты не опух ли на работе в игрушки играть? — Вроде всё работает, проблем нет, чем ещё заниматься? — Работать!
Вроде и не поспоришь, но меня вдруг пробирает:
— Знаете ли вы, за что платили врачам в древнем Китае?
Босс безмолвствует.
— За здоровых пациентов. В конце месяца каждый больной уменьшал жалованье доктора.
Я думал, что увольнение неизбежно, но в итоге получил солидную прибавку к окладу и внеплановый апгрейд рабочей машины.