Код запаха
В компьютерном программировании — запах кода это любая характеристика исходного кода программы , которая, возможно, указывает на более глубокую проблему. [1] [2] Определение того, что является запахом кода, а что нет, является субъективным и зависит от языка , разработчика и методологии разработки.
Этот термин был популяризирован Кентом Беком на WardsWiki в конце 1990-х годов. [3] Использование этого термина увеличилось после того, как он был представлен в книге Рефакторинг: улучшение дизайна существующего кода» « Мартина Фаулера в 1999 году . [4] Этот термин также используют гибкие программисты. [5]
Определение
[ редактировать ]Один из способов взглянуть на запахи — с точки зрения принципов и качества: «Запахи — это определенные структуры в коде, которые указывают на нарушение фундаментальных принципов проектирования и отрицательно влияют на качество дизайна». [6] Запахи кода обычно не являются ошибками ; они не являются технически неправильными и не мешают работе программы. Вместо этого они указывают на недостатки в дизайне, которые могут замедлить разработку или увеличить риск ошибок или сбоев в будущем. Плохой запах кода может быть индикатором факторов, способствующих возникновению технического долга . [1] Роберт К. Мартин называет список запахов кода «системой ценностей» для создания программного обеспечения. [7]
Вопреки этим суровым интерпретациям, первоначальное определение Каннингема заключалось в том, что запах — это намек на то, что что-то не так, а не свидетельство того, что проблема уже существует. [3]
Часто более глубокая проблема, на которую указывает запах кода, может быть обнаружена, когда код подвергается короткому циклу обратной связи , когда он рефакторируется небольшими, контролируемыми шагами, а полученный проект исследуется на предмет наличия каких-либо дополнительных запахов кода, которые могут в свою очередь, указывают на необходимость дальнейшего рефакторинга. С точки зрения программиста, которому поручено выполнять рефакторинг, запахи кода — это эвристика, указывающая, когда проводить рефакторинг и какие конкретные методы рефакторинга использовать. Таким образом, запах кода является драйвером для рефакторинга.
Факторами являются такие факторы, как понятность кода, легкость его модификации, легкость его расширения для поддержки функциональных изменений, возможность повторного использования кода в различных настройках, степень тестируемости кода и надежность кода. который можно использовать для идентификации запаха кода. [8]
Исследование 2015 года [1] использование автоматического анализа полумиллиона коммитов исходного кода и ручная проверка 9164 коммитов, в которых было установлено наличие «запаха кода», выявило следующее:
- Существуют эмпирические данные о последствиях «технического долга», но существуют лишь неофициальные данные о том как , , когда и почему это происходит.
- Здравый смысл подсказывает, что причиной таких запахов часто являются срочные мероприятия по техническому обслуживанию и необходимость предоставления новых функций, при этом приоритет отдается времени выхода на рынок над качеством кода.
Такие инструменты, как Checkstyle , PMD , FindBugs и SonarQube , могут автоматически определять запахи кода.
См. также
[ редактировать ]- Антипаттерн
- Дизайнерский запах
- Список инструментов для статического анализа кода
- Программное гниение
Ссылки
[ редактировать ]- ^ Перейти обратно: а б с Туфано, Микеле; Паломба, Фабио; Бавота, Габриэле; Оливето, Рокко; Ди Пента, Массимилиано; Де Люсия, Андреа; Пошиваник, Денис (2015). «Когда и почему ваш код начинает плохо пахнуть» (PDF) . 2015 IEEE/ACM 37-я Международная конференция IEEE по программной инженерии . стр. 403–414. CiteSeerX 10.1.1.709.6783 . дои : 10.1109/ICSE.2015.59 . ISBN 978-1-4799-1934-5 . S2CID 59100195 .
- ^ Фаулер, Мартин. «КодЗапах» . martinfowler.com/ . Проверено 19 ноября 2014 г.
- ^ Перейти обратно: а б Бек, Кент. «Код пахнет» . ВикиВикиВеб . Уорд Каннингем . Проверено 8 апреля 2020 г.
- ^ Фаулер, Мартин (1999). Рефакторинг. Улучшение дизайна существующего кода . Аддисон-Уэсли. ISBN 978-0-201-48567-7 .
- ^ Бинсток, Эндрю (27 июня 2011 г.). «Во славу небольшого кода» . Информационная неделя . Проверено 27 июня 2011 г.
- ^ Сурьянараяна, Гириш (ноябрь 2014 г.). Рефакторинг для запахов проектирования программного обеспечения . Морган Кауфманн. п. 258. ИСБН 978-0128013977 .
- ^ Мартин, Роберт С. (2009). «17: Запахи и эвристика». Чистый код: Руководство по гибкому созданию программного обеспечения . Прентис Холл. ISBN 978-0-13-235088-4 .
- ^ Сурьянараяна, Гириш, Ганеш Самартьям и Тушар Шарма. Рефакторинг для запахов проектирования программного обеспечения: Управление техническим долгом / Гириш Сурьянараяна, Ганеш Самартьям, Тушар Шарма. 1-е издание. Уолтем, Массачусетс ; Морган Кауфманн, 2015. Печать.
Дальнейшее чтение
[ редактировать ]- Гаруси, Вахид; Кучук, Барыш (2018). «Запахи в коде тестирования программного обеспечения: обзор знаний в промышленности и научных кругах». Журнал систем и программного обеспечения . 138 : 52–81. дои : 10.1016/j.jss.2017.12.013 .
- Шарма, Тушар; Спинеллис, Диомидис (2018). «Опрос о запахах программного обеспечения» . Журнал систем и программного обеспечения . 138 : 158–173. дои : 10.1016/j.jss.2017.12.034 .
Внешние ссылки
[ редактировать ]- «КодЗапах» . martinfowler.com . Проверено 01 марта 2022 г.
- Баунди, Дэвид, Рак программного обеспечения: семь признаков раннего предупреждения или здесь , ACM SIGSOFT Software Engineering Notes, Vol. 18 № 2 (апрель 1993 г.), Ассоциация вычислительной техники, Нью-Йорк, штат Нью-Йорк, США.