Антипаттерн: Спагетти-код

По аналогии с паттернами проектирования (как надо проектировать системы), появилось еще одно интересное направление программистской мысли – антипаттерны (самые популярные ошибки совершаемые программистами).

Самым часто встречающимся из них является антипаттерн “Код-спагетти”, с него и начну.
Больше всего этому антипаттерну подвержены небольшие программы, написанные без использования объектно-ориентированной модели. Почему это так – поймете позже.

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

Не смотря на то, что спагетти-код очень часто определяется с первого взгляда на код, из-за невыдержанности стиля оформления кода программистом (что говорит о его неопытности), существуют еще несколько более глубоких признаков такого кода:

  • После анализа кода, выявляется, что только незначительная часть всего кода может быть использована независимо от него в другой системе.
  • Многие методы объектов не содержат параметров, а используют глобальные переменные вместо этого.
  • Все объекты практически не связаны между собой.
  • Большинство методов являются скорее процессо-ориентированы, нежели объектно-ориентированы.
  • Код не поддается повторному использованию, а если поддается, то только через copy-paste.
  • Наследование не используется для расширения системы.
  • Система быстро достигает точки, в которой стоимость ее содержания превышает стоимость ее построения с нуля.

Причин появления такого кода несколько:

  • Отсутствие опыта в ООП у программиста
  • Отсутствие куратора у молодого специалиста приступающего к сопровождению большой системы
  • Пропущена стадия проектирования ПО (сразу начинается программирование).

Несмотря на все недостатки такого кода, в некоторых случаях он имеет право на существование.

Спагетти-код допустим в следующих случаях:

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

Очевидным способом борьбы со спагетти-кодом является превентивная мера в виде первоначального проектирования ПО.

Если же код приложения все-таки уже представляет из-за себя Спагетти-код, то единственным решением будет его рефакторинг (хотя еще можно переписать все с нуля).




Читайте также:



 #  #  #  #  #  #  #  #  #  #

Один ответ на “Антипаттерн: Спагетти-код”

  1. [...] php (из последнего опубликованного — Антипаттерн: Спагетти-код). Кроме этих рубрик рекомендую заглянуть еще в AJAX / [...]

Оставить комментарий


© 2008 - 2010 i-novice.net | Все права защищены.