Дело не только в вкусе

Во время обучения в 8th Light я слышал, как мастера говорили о «запахе кода». Хотя я незнаком с этой концепцией, она мне понравилась с самого начала, потому что название легко передает идею.

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

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

Есть несколько типов запахов кода. По определению, их легко обнаружить, и очень часто они являются результатом несоблюдения принципов хорошего дизайна / кодирования. Вот список (некоторых) наиболее распространенных запахов кода, которые вы можете нюхать в своем коде, по крайней мере, те, с которыми я сталкивался до сих пор:

  • дублированный код: не повторяйся! (один из принципов хорошего кода).
  • Длинные методы: хотя они не всегда ошибочны, более короткие методы все же легче читать и понимать.
  • Большой класс / ленивый класс / «перегруженный» класс: класс может быть слишком длинным, или делать слишком мало, или иметь слишком много обязанностей. Остерегайтесь своего класса!
  • Классы данных: классы со всеми данными и без какого-либо поведения.
  • Длинный список параметров: ограничьте количество параметров или используйте объект для их объединения.
  • Комментарии: спросите себя - необходимы ли комментарии? Можете ли вы реорганизовать код, чтобы комментарии не требовались?
  • Мертвый код: удалить неиспользуемый код.
  • Несогласованные имена: выберите набор стандартной терминологии и придерживайтесь ее во всех своих методах.
  • Неинформативное имя: описывает ли имя метода то, что он делает? Если нет, измените имя вашего метода.

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

Похоже, запах кода очень легко обнаружить неопытным разработчикам. Важно научиться распознавать запах собственного кода, потому что запах кода может помочь понять, где и когда проводить рефакторинг и какие конкретные методы рефакторинга использовать. Запах кода - повод для рефакторинга; Более глубокая проблема, на которую указывает запах кода, может быть обнаружена, когда код подвергается небольшому рефакторингу, выполняемому небольшими шагами, после чего запах нового кода может указывать на необходимость дальнейшего рефакторинга.

В заключение: не забудьте также понюхать свой код, если хотите, чтобы он был лучше!