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

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

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

В Code Complete 2 Стив МакКоннелл рассказывает об общих метафорах программного обеспечения. Один из первых упоминаний касается программного письма. Он гласит:

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

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

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

МакКоннелл, похоже, согласен с моей теорией.

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

МакКоннелл говорит о развитии системы. Написание кода постепенно. Но, при более детальном подходе.

Вы разрабатываете продукт, кодируете его, тестируете и постепенно добавляете в систему. Делая небольшие шаги, вы сводите к минимуму проблемы, с которыми вы можете столкнуться в любой момент.

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

Акт написания кода — это акт сообщения другому программисту того, что вы ожидаете, когда программа будет запущена.

Первоначально опубликовано на http://scottradcliff.com/writing-code.html.