Контроль качества кода в перспективе развития проекта
Эта статья впервые опубликована в издании Хабрахабр от 19 Октября 2016. Тут публикуется полная её версия.
Наверняка всем знакома ситуация, когда развитием проекта упирается в какую-то стену, внедрение новых функций становится все более затратным по времени и финансам. И, к сожалению, нередки такие моменты, когда чаша весов с ценой, начинает значительно перевешивать возможную выгоду от реализации той, или иной функции.
Это достаточно стандартный и, во многом, привычный ход событий. С опытом, мы пытаемся делать разрозненные попытки улучшать ситуацию, и не допускать ошибок прошлого. Но часто, собрать все в кучу для организации какой-то вменяемой системы времени не хватает. И, какое-либо универсальное решение, до настоящего времени, найти было достаточно непросто.
Так вот, проанализировав множество различных проектов специалисты компании Software Improvement Group (SIG) разработали набор простейших принципов и правил, следуя которым, можно в значительной степени улучшить такое состояние вещей. Эти принципы были изложены в книге-руководстве Building Maintainable Software, Java Edition: Ten Guidelines for Future-Proof Code (ISBN print: 978-1-4919-5352-5, ISBN eBook: 978-1-4919-5348-8).
Все элементы, необходимые для построения стабильной в поддержке системы на удивление просты и понятны. Они с лёгкостью могут применяться для приложений любой сложности. Наибольшего эффекта от такого подхода можно достичь, если использовать его с самого начала разработки, особенно сложных программных систем. Однако, использовав это руководство уже на более поздних этапах, можно добиться заметного улучшения показателей для новых модулей и стойкого снижения темпов усложнения создаваемой системы в целом.
Возьму на себя смелость тезисно изложить основные моменты из этого руководства.
Важность более простой поддержки для бизнеса
- Сроки внедрения новых функций существенно меньше. Продукт на шаг впереди конкурентов.
- Время исправления багов значительно сокращается. Заказчик и клиенты в выигрыше.
- Простота введения в проект новых разработчиков. Диверсификация рисков.
- Оптимизация по любому другому параметру системы требует изменений в коде проекта.
- Хорошо поддерживаемый код, как правило, работает на порядок стабильнее. Изменения в нем имеют меньше побочных эффектов.
Особенности внедрения
- Поддерживаемость обеспечивается выполнением простых руководств.
- Выполнять эти руководства нужно с самого старта проекта, важен вклад каждого разработчика.
- Некоторые нарушения гораздо хуже остальных.
Перечень рекомендаций
- Пишите короткие методы
- Пишите простые методы
- Пишите код только один раз
- Старайтесь создавать маленькие интерфейсы для методов и конструкторов
- Распределяйте задачи по модулям
- Создавайте компоненты со слабой связанностью
- Соблюдайте баланс между компонентами
- Старайтесь писать меньше кода
- Автоматизируйте тестирование и деплой
- Пишите чистый код
Некоторые из этих принципов можно легко контролировать в автоматическом режиме, для этого были созданы специальные программные средства для таких языков как Java и C#. Мы предлагаем простейшую реализацию автоматического контроля для PHP разработки. Нами был реализован контроль следующих базовых принципов:
- Длина функций не должна превышать 15 строк кода;
- Цикломатическая сложность функции не должна быть более 5;
- Функции не должны принимать более 4 входных аргументов;
- Класс не должен содержать более 15 методов;
После внедрения подобного контроля в нашей компании, качество разработки значительно улучшилось. Код стал гораздо более простым для понимания и поддержки.
Предлагаем вам базовый вариант решения для автоматического контроля. Стандарт легко встраивается в систему контроля версий. Рекомендуем использовать его в связке с другими стилистическими стандартами, принятыми в вашей компании.
P.S. Чтобы получать наши новые статьи раньше других или просто не пропустить новые публикации — подписывайтесь на нас в Facebook, VK, Twitter