stringtranslate.com

Запах кода

В компьютерном программировании запах кода — это любая характеристика в исходном коде программы , которая может указывать на более глубокую проблему. [1] [2] Определение того, что является запахом кода, а что нет, является субъективным и зависит от языка , разработчика и методологии разработки.

Термин был популяризирован Кентом Беком на WardsWiki в конце 1990-х годов. [3] Использование термина возросло после того, как он был представлен в книге 1999 года «Рефакторинг: улучшение дизайна существующего кода» Мартина Фаулера . [4] Этот термин также используется гибкими программистами. [5]

Определение

Один из способов взглянуть на запахи — с точки зрения принципов и качества: «Запахи — это определенные структуры в коде, которые указывают на нарушение фундаментальных принципов проектирования и негативно влияют на качество проектирования». [6] Запахи кода обычно не являются ошибками ; они не являются технически неверными и не мешают программе функционировать. Вместо этого они указывают на слабые места в дизайне, которые могут замедлить разработку или увеличить риск ошибок или сбоев в будущем. Запахи плохого кода могут быть индикатором факторов, которые способствуют техническому долгу . [1] Роберт С. Мартин называет список запахов кода «системой ценностей» для мастерства в разработке программного обеспечения. [7]

Вопреки этим строгим толкованиям, первоначальное определение Каннингема состояло в том, что запах — это предположение о том, что что-то может быть не так, а не доказательство того, что проблема уже существует. [3]

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

Такие факторы, как понятность кода, простота его модификации, простота его улучшения для поддержки функциональных изменений, возможность повторного использования кода в различных условиях, возможность тестирования кода и надежность кода, являются факторами, которые можно использовать для выявления кода с запахом. [8]

Исследование 2015 года [1], в котором использовался автоматизированный анализ полумиллиона коммитов исходного кода и ручная проверка 9164 коммитов, в которых были выявлены «кодовые запахи», показало, что:

Такие инструменты, как Checkstyle , PMD , FindBugs и SonarQube , могут автоматически определять подозрительный код.

Смотрите также

Ссылки

  1. ^ abc Туфано, Микеле; Паломба, Фабио; Бавота, Габриеле; Оливето, Рокко; Ди Пента, Массимилиано; Де Лючия, Андреа; Пошиваник, Денис (2015). «Когда и почему ваш код начинает плохо пахнуть» (PDF) . 2015 IEEE/ACM 37-я Международная конференция IEEE по программной инженерии . стр. 403–414. CiteSeerX  10.1.1.709.6783 . doi :10.1109/ICSE.2015.59. ISBN 978-1-4799-1934-5. S2CID  59100195.
  2. ^ Фаулер, Мартин. "CodeSmell". martinfowler.com/ . Получено 19 ноября 2014 г. .
  3. ^ ab Beck, Kent. «Code Smells». WikiWikiWeb . Ward Cunningham . Получено 8 апреля 2020 г. .
  4. ^ Фаулер, Мартин (1999). Рефакторинг. Улучшение дизайна существующего кода . Addison-Wesley. ISBN 978-0-201-48567-7.
  5. ^ Бинсток, Эндрю (27.06.2011). «В похвалу малому коду». Information Week . Получено 27.06.2011 .
  6. ^ Suryanarayana, Girish (ноябрь 2014). Рефакторинг для Software Design Smells . Морган Кауфманн. стр. 258. ISBN 978-0128013977.
  7. ^ Мартин, Роберт С. (2009). "17: Запахи и эвристики". Чистый код: Справочник по гибкому программному мастерству . Prentice Hall. ISBN 978-0-13-235088-4.
  8. ^ Сурьянараяна, Гириш, Ганеш Самартьям и Тушар Шарма. Рефакторинг для запахов проектирования программного обеспечения: Управление техническим долгом / Гириш Сурьянараяна, Ганеш Самартьям, Тушар Шарма. 1-е издание. Уолтем, Массачусетс ; Морган Кауфманн, 2015. Печать.

Дальнейшее чтение

Внешние ссылки