> For the complete documentation index, see [llms.txt](https://interlink.gitbook.io/process/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://interlink.gitbook.io/process/dev/development/engineering-practice/kachestvo-koda.md).

# Качество кода

Code Quality

Качественным, называется программный код, соответствующий следующим критериям:

* Правильность

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

* Простота

В том числе не содержащим явного и скрытого дублирования (под скрытым дублированием понимают повторяющую последовательность шагов для внесения изменения в код, например для того чтобы добавить новый end point обработчик нужно модифицировать routes конфигурацию, добавить класс контроллера, добавить класс валидатор, добавить валидатор в коллекцию валидаторов и тп)

* Понятность&#x20;

Мы пишем код понятный человеку, а не компилятору

* Тестируемость и тестопригодность&#x20;

Код написан в виде абстракций с понятными интерфейсами, для внутренней логики не сложно написать тест.

* Расширяемость

Архитектура приложения понятна и в код просто добавлять новые функции.

**Рекомендуемая литература**

* Clean Code: A Handbook of Agile Software Craftsmanship (Robert C. Martin)

  by Robert Martin
* Refactoring: Improving the Design of Existing Code, by Martin Fowler
* Working Effectively with Legacy Code Paperback, by Michael Feathers
