ua
ua
ГоловнаБлог

Контроль качества кода в перспективе развития проекта

Эта статья впервые опубликована в издании Хабрахабр от 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).

Все элементы, необходимые для построения стабильной в поддержке системы на удивление просты и понятны. Они с лёгкостью могут применяться для приложений любой сложности. Наибольшего эффекта от такого подхода можно достичь, если использовать его с самого начала разработки, особенно сложных программных систем. Однако, использовав это руководство уже на более поздних этапах, можно добиться заметного улучшения показателей для новых модулей и стойкого снижения темпов усложнения создаваемой системы в целом.

Возьму на себя смелость тезисно изложить основные моменты из этого руководства.

Важность более простой поддержки для бизнеса

  • Сроки внедрения новых функций существенно меньше. Продукт на шаг впереди конкурентов.
  • Время исправления багов значительно сокращается. Заказчик и клиенты в выигрыше.
  • Простота введения в проект новых разработчиков. Диверсификация рисков.
  • Оптимизация по любому другому параметру системы требует изменений в коде проекта.
  • Хорошо поддерживаемый код, как правило, работает на порядок стабильнее. Изменения в нем имеют меньше побочных эффектов.

Особенности внедрения

  • Поддерживаемость обеспечивается выполнением простых руководств.
  • Выполнять эти руководства нужно с самого старта проекта, важен вклад каждого разработчика.
  • Некоторые нарушения гораздо хуже остальных.

Перечень рекомендаций

  1. Пишите короткие методы
  2. Пишите простые методы
  3. Пишите код только один раз
  4. Старайтесь создавать маленькие интерфейсы для методов и конструкторов
  5. Распределяйте задачи по модулям
  6. Создавайте компоненты со слабой связанностью
  7. Соблюдайте баланс между компонентами
  8. Старайтесь писать меньше кода
  9. Автоматизируйте тестирование и деплой
  10. Пишите чистый код

Некоторые из этих принципов можно легко контролировать в автоматическом режиме, для этого были созданы специальные программные средства для таких языков как Java и C#. Мы предлагаем простейшую реализацию автоматического контроля для PHP разработки. Нами был реализован контроль следующих базовых принципов:

  • Длина функций не должна превышать 15 строк кода;
  • Цикломатическая сложность функции не должна быть более 5;
  • Функции не должны принимать более 4 входных аргументов;
  • Класс не должен содержать более 15 методов;

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

Предлагаем вам базовый вариант решения для автоматического контроля. Стандарт легко встраивается в систему контроля версий. Рекомендуем использовать его в связке с другими стилистическими стандартами, принятыми в вашей компании.

P.S. Чтобы получать наши новые статьи раньше других или просто не пропустить новые публикации — подписывайтесь на нас в FacebookVKTwitter

Сергій Харланчук
Senior Web Developer / Team Lead, SECL Group

Схожі публікації

Більше про нас?
Компанія
Більше кейсів?
Роботи
Є проект?
Контакти
Канада

240 Richmond Street W
Toronto ON M5V 1V6
+1 (647) 946-92-12

США

3524 Silverside Road
35B, Wilmington,
Delaware 19810-4929
+1 (929) 237-12-11

Україна

79039, м. Львів,
вул. Дмитра Бортнянського, 23
+380 (44) 389-90-39

Copyright © 2005 – 
2024
, ГК «SECL Group»