Каковы преимущества и недостатки использования аспектно-ориентированной парадигмы программирования [закрыто]

10

Итак, вот вопрос: каковы преимущества и недостатки использования аспектно-ориентированной парадигмы программирования.

Мои преимущества и недостатки пока:

Преимущества:

  • Дополняет объектную ориентацию.
  • Модулирует сквозные вопросы, улучшающие удобство обслуживания и понятность кода.

Недостаток:

  • Не самая легкая для понимания концепция - не так хорошо документирована, как ОО
  • ОО идет достаточно далеко в разделении проблем ...

Кто-нибудь хотел бы оспорить любой из них / добавить свои собственные?

Большое спасибо, J

JHarley1
источник
1
Там уже много учебных материалов. Введение в АОП - dotnetslackers.com/articles/net/… . Узнайте PostSharp (AOP Framework) - programmersunlimited.wordpress.com/postsharp-principals
DustinDavis

Ответы:

3

С точки зрения программиста, девизом которого является «Keep It Simple Stupid», оценка использования таких моделей опасна. За то, что он пытается достичь, он делает программу гораздо более трудной для понимания и, следовательно, легче разбить.

Гениальность хорошего программирования заключается в его простоте. Сложные программы могут работать, но это кошмары, когда речь идет об обслуживании, и если учесть, что 2/3 времени, затрачиваемого программистом, тратится на исправление ошибок в программах, в конечном итоге это не окупается.

Нил
источник
2

Распределение функциональности вне места действия увеличивает сложность и проблемы на расстоянии.

Я считаю, что такие подходы к проектированию должны развиваться, потому что система требует этого для чистой работы, а не для разработки с самого начала.

Пол Натан
источник
2

Дополнительные преимущества (не все)

  • Повторное использование классов и аспектов, благодаря модульности
  • Снижение затрат на кодирование благодаря модульности и повторному использованию
  • Более короткий код благодаря возможности иметь аспект с кодом, который в противном случае был бы реализован (разбросан) по нескольким классам
  • Возможность добавлять поведение в класс, не вводя в него код, не связанный с его основной ответственностью
  • Возможность переопределить семантику методов / классов, не сообщая об этом клиентским классам.

Недостатки

  • Затраты времени выполнения при использовании некоторых конструкций, например, cflow
испускают
источник
0

Недостаток: плохая поддержка цепочки инструментов: - отладчик и профилировщик могут не знать о «аспектно-ориентированном программировании», по этой причине они могут работать с кодом, как если бы все аспекты были заменены процедурным кодом.

user148488
источник