Jakie są zalety i wady korzystania z paradygmatu programowania zorientowanego na aspekty [zamknięty]

10

Ok, oto pytanie: jakie są zalety i wady korzystania z paradygmatu programowania zorientowanego na aspekty.

Moje dotychczasowe zalety i wady:

Zalety:

  • Uzupełnia orientację obiektu.
  • Modularyzuje przekrojowe problemy poprawiające utrzymanie kodu i zrozumiałość.

Niekorzyść:

  • Nie jest to najłatwiejsza koncepcja do uchwycenia - nie tak dobrze udokumentowana jak OO
  • OO posuwa się wystarczająco daleko w rozdzielaniu obaw ...

Czy ktoś chciałby zakwestionować którekolwiek z nich / dodać własne?

Wielkie dzięki, J

JHarley1
źródło
1
Wiele materiałów do nauki już tam jest. Wprowadzenie do AOP - dotnetslackers.com/articles/net/… . Dowiedz się PostSharp (środowisko AOP) - programmersunlimited.wordpress.com/postsharp-principals
DustinDavis

Odpowiedzi:

3

Z punktu widzenia programisty, którego motto brzmi „Keep It Simple Stupid”, ocena użycia takich modeli jest niebezpieczna. To, co próbuje osiągnąć, sprawia, że ​​program jest znacznie trudniejszy do zrozumienia, a w konsekwencji łatwiejszy do złamania.

Geniusz dobrego programowania polega na prostocie jak na ironię. Złożone programy mogą działać, ale są koszmarami, jeśli chodzi o konserwację, a jeśli weźmiesz pod uwagę, że programista poświęca 2/3 czasu na naprawę błędów w programach, to w końcu się nie opłaca.

Neil
źródło
2

Dystrybucja funkcjonalności poza miejsce działania zwiększa złożoność i problemy z działaniem na odległość.

Uważam takie podejście do projektowania za coś, w co należy ewoluować, ponieważ system wymaga tego do czystej pracy, a nie od samego początku.

Paul Nathan
źródło
2

Dodatkowe zalety (nie wszystkie)

  • Ponowne wykorzystanie klas i aspektów, dzięki modułowości
  • Niższy koszt kodowania dzięki modułowości i możliwości ponownego użycia
  • Krótszy kod dzięki możliwości posiadania aspektu z kodem, który w innym przypadku zostałby zaimplementowany (rozproszony) w kilku klasach
  • Możliwość dodawania zachowania do klasy bez wprowadzania kodu niezwiązanego z jej główną odpowiedzialnością
  • Możliwość przedefiniowania semantyki metod / klas bez konieczności informowania o tym klas klienta

Niedogodności

  • Narzut związany z działaniem podczas korzystania z niektórych konstrukcji, np. Cflow
wydzielać
źródło
0

Wada: słaba obsługa łańcucha narzędzi: - debugger i profiler mogą nie wiedzieć o „Programowaniu zorientowanym na aspekty” z tego powodu mogą pracować na kodzie, tak jakby wszystkie aspekty zostały zastąpione kodem proceduralnym.

użytkownik148488
źródło