Пишем красивый код

Перевод статьи Эндрю Девиса «Writing Beautiful Code».

Пишем красивый код

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

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

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

Проблема с подходом к коду как к предмету искусства в том, что такого результата непросто добиться. Часто бывает довольно сложно заставить код хотя бы работать, что уж говорить о творческом подходе! Однако, как и в любой форме искусства, здесь есть некоторые базовые техники. Если им следовать, можно писать код с хорошим дизайном.

Я все еще в поисках наилучших способов написания красивого кода. Представленные ниже шаги помогают мне внести немного искусства в мой процесс программирования.

Начинайте с модульных тестов

Разработку через тестирование не все любят, но я считаю ее очень хорошим методом. Это не только дает вам уверенность, что весь код протестирован. Это заставляет вас заранее, еще до написания кода думать о том, как он будет использоваться.

Возьмем пример. Давайте представим, что мы пишем почтовый клиент на PHP и хотим при этом быть креативными в плане его дизайна. Начнем с модульного тестирования отсылки сообщения:
Код почтового клиентаПоскольку мы сначала написали модульный тест, мы уже знаем, какую форму должен принять наш код. Мы знаем, что в нем будет пространство имен Email с двумя классами, представляющими почтовый клиент и сообщение – Client и Message.

Мы также знаем, что у нас будет метод send для процесса отправки сообщения клиентом.

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

Пользуйтесь принципами грамматики при именовании переменных и методов

Программисты часто шутят насчет сложности придумывания имен. Это и правда сложно! Однако, дать имя кусочку кода не только трудно, но еще и очень важно.

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

В приведенном выше примере мы решили поместить весь наш код в пространство имен Email, что очень понятно передает его содержимое. Далее, мы выбрали имя Client для представления объекта, отсылающего сообщения, и Message для сообщения как такового. Оба слова — описательные существительные. Наконец, мы называем метод словом send: это глагол, который повсеместно ассоциируется с email.

Теперь мы видим хороший шаблон: использование существительных для имен классов и глаголов – для методов.

Программирование как искусство

Функции должны быть маленькими

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

Этот метод простой, но загроможденный.

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

Усовершенствование кода Усовершенствование кода -2

Теперь наш метод send гораздо чище. Остальные функции выполняют одинарные действия и состоят меньше чем из 10 строк кода каждая, а значит, их легко читать.

Пользуйтесь руководствами по стилю

Наконец, я советую пользоваться руководствами по стилю для выбранного вами языка. Для своего кода на PHP я предпочитаю использовать стандарт PSR-2 FIG. Стандарт FIG широко узнаваем, он используется в популярных фреймворках, таких как Laravel и Symfony. Плюс, команда Symfony выпустила PHP Coding Standards Fixer – CLI-утилиту, которая «автомагическим» образом форматирует ваш код под стандарт PSR-2.

Заключение

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

Если хотите узнать больше о написании красивого кода, я советую читать код с хорошим дизайном. Кодовые базы Laravel и Ruby on Rails это отличные примеры чистого кода, авторы которого проявили и творческий подход. Погрузитесь в него и вы многому научитесь!


[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх