Принципы написания хорошего кода. Часть 1
Рабочий код - это не обязательно хорошо написанный код. Однако код, помимо того, что работает, должен быть легким для чтения, понимания и модификации. Он должен ясно выражать мысль автора, и для достижения этого он должен быть хорошо организован с тщательным планированием всех этапов и надлежащим разделением идей, до того как вы даже откроете свой редактор кода. Ясное кодирование - это то, что отделяет превосходных разработчиков от просто хороших. В данном цикле статей мы обсудим несколько основных принципов, которые помогут вам определить правильный путь.
Принцип единой ответственности
В принципе единой ответственности говорится, что блок кода должен делать одно и делать это хорошо. Ограничение его функциональности фактически повышает полезность блока кода. Кодирование, таким образом, не только избавит вас от головной боли, но и сэкономит будущим разработчикам – пользователям, много времени.
Подумайте о функциях и методах с точки зрения обязанностей. По мере увеличения своих обязанностей блок кода становится менее гибким и надежным, более требовательным к изменениям и более восприимчивым к ошибкам. Для большей ясности каждая функция или метод должны нести одну ответственность.
Если при описании того, что делает функция, вам приходится использовать предлог «и», эта функция, вероятно, слишком сложна.
Недавно мне пришлось разрабатывать интерактивный сайт, в котором я закодировал одну гигантскую функцию под названием processForm - она собирает оценки, формирует диаграммы и выводит это все через DOM пользователю.
Проблема заключалась в том, что если появилась бы необходимость внести изменения в существующий код, то пришлось бы искать по всей кодовой базе, чтобы выяснить, где внести изменения. Кроме того, если что-то пошло бы не так где-то в внутри какой-то функции, было бы намного сложнее найти ошибку.
Поэтому, столкнувшись с данной проблемой, я разделил функции в соответствии с их обязанностями и завернул все это дело в объект модуля. Полученная функция для отправки формы, стала выглядеть так:
return {
processForm: function() {
getScores();
calculatePercentages();
createCharts();
showResults();
}
};
Просто читать, понимать и модифицировать, даже если вы не кодер. И каждая из этих функций делает только одно. Это принцип единой ответственности в действии.
Если бы я захотел добавить проверку формы, вместо того, чтобы изменять гигантскую рабочую функцию (потенциально ее нарушая), я мог бы просто добавить новый метод. Этот подход также позволяет сегментировать взаимосвязь между логикой и переменными, сокращая конфликты для большей надежности, а это очень упрощает повторное использование функций для других целей, если это необходимо.
Поэтому помните: одна функция, одна ответственность. Если функция выполняет множество вещей, которые тесно связаны друг с другом и работают с одними и теми же данными, разумнее разбить ее на объект с помощью методов, как это было с моей большой функцией формы.
На этом все, а в следующих статьях мы продолжим обсуждение основных принципов написания чистого и поддерживаемого кода.
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.