Что такое “Чистый код”
Нету простого определения понятию “Чистый код”. Но можно тезисно описать некоторые подходы к пониманию:
- Не содержит дубликатов
- Четкий, простой и прямолинейный
- Минимально-необходимое количество сущностей: классов, зависимостей, методов, функций, строк кода и т.д.
- Понятный и выразительный
- Продуманный. Создает впечатление, что автор кода над ним усердно потрудился
- Реализованы все требования к продукту
Почти все это абстрактно, поэтому ниже будет конкретика
Почему важно писать чистый код
- “Грязный код” накапливается. Это приводит к ошибкам. Количество ошибок растет лавинообразно. В конечном счете проект становится очень дорого поддерживать
- Вы сами будете не раз возвращаться к своему предыдущему коду. Нужно будет вносить правки или улучшения. Чистый код проще поддерживать. Скорость разработки с чистым кодом выше
- Не только вы будете изучать предыдущий код, но и ваши коллеги. Они почувствуют уважение и благодарность, если столкнуться с чистым кодом
- Написание чистого кода так же будет развивать в вас такие положительные черты, как аккуратность, внимательность и предусмотрительность
Начало — простые концепции
Несмотря на кажущуюся простоту, они очень важные:
- Правило бойскаута
В контексте кода, правило бойскаута может звучать так: оставляем код чище, чем был до нашего прихода. Чистка не обязательно должна быть глобальной. Можно дать более удачное имя переменной, можно убрать замеченный дубль кода. Даже простые изменения в перспективе будут давать положительные результаты.
Этот принцип формируем в нас характер и стремление к чистоте
- Содержательные имена
Имена должны передавать намерения программиста. При удачном именовании переменных, методов и класса, комментарии к коду не будут нужны. Сам код будет легко читаться и пониматься
Что следует избегать:
- Короткие названия, которые слабо описывают смысл
grnp109, a1, pf
- Однобуквенных переменных, где можно заложить смысл
$items = $this->userOrdersFromLastVisit($date); foreach($items as $i) { $i->date = Date.now(); }
Может быть
$userOrders = $this->userOrdersFromLastVisit($dateOfLastVisit); foreach($userOrders as $userOrder) { $userOrder->updatedDate = Date.now(); }
- Сокращения и неудобно-читаемые имена
Было
mngmnt, len, datefromlastupdate
стало
management, length, dateFromLastUpdate
Другие рекомендации
- Имена классов — обычно имена существительные: Product, UserPage, OrderParser
- Имена методов — глаголы или глагольные словосочетания: deleteProduct, save, getName
- Писать имена на английском языке без ошибок. Перевод любого слова можно получить в онлайн-переводчике
- Быть последовательным. Если для получения данных в классе несколько раз использовался термин get, в похожем контексте слово fetch будет выбиваться
I needed to thank you for this excellent read!! I definitely enjoyed every little bit of it. I have got you bookmarked to look at new things you postÖ
Excellent article. I certainly love this website. Keep writing!
Thanks for your blog, nice to read. Do not stop.