Welche Vor- und Nachteile hat die Verwendung eines aspektorientierten Programmierparadigmas? [Geschlossen]

10

Ok, hier ist die Frage: Was sind die Vor- und Nachteile der Verwendung eines aspektorientierten Programmierparadigmas?

Meine bisherigen Vor- und Nachteile:

Vorteile:

  • Ergänzt die Objektorientierung.
  • Modularisiert Querschnittsthemen und verbessert die Wartbarkeit und Verständlichkeit von Code.

Nachteil:

  • Nicht das am einfachsten zu erfassende Konzept - nicht so gut dokumentiert wie OO
  • OO geht weit genug bei der Trennung von Bedenken ...

Möchte jemand eines davon herausfordern / sein eigenes hinzufügen?

Vielen Dank, J.

JHarley1
quelle
1
Es gibt bereits viele Lernmaterialien. Einführung in AOP - dotnetslackers.com/articles/net/… . Erfahren Sie PostSharp (AOP Framework) - programmersunlimited.wordpress.com/postsharp-principals
DustinDavis

Antworten:

3

Aus der Sicht eines Programmierers, dessen Motto "Keep It Simple Stupid" lautet, ist die Bewertung der Verwendung solcher Modelle gefährlich. Für das, was es zu erreichen versucht, macht es ein Programm weitaus schwieriger zu verstehen und folglich leichter zu brechen.

Das Genie guter Programmierung liegt ironischerweise in seiner Einfachheit. Komplexe Programme funktionieren möglicherweise, sind jedoch Albträume bei der Wartung. Wenn Sie bedenken, dass 2/3 der von einem Programmierer aufgewendeten Zeit für die Behebung von Fehlern in Programmen aufgewendet wird, zahlt sich dies am Ende nicht aus.

Neil
quelle
2

Das Verteilen von Funktionen außerhalb des Einsatzorts erhöht die Komplexität und Probleme bei Fernaktionen.

Ich halte solche Entwurfsansätze für etwas, zu dem man sich weiterentwickeln sollte, da das System dies für einen sauberen Betrieb verlangt und nicht zu Beginn entwickelt wurde.

Paul Nathan
quelle
2

Zusätzliche Vorteile (nicht alle)

  • Wiederverwendung von Klassen und Aspekten dank Modularität
  • Reduzierte Codierungskosten dank Modularität und Wiederverwendung
  • Kürzerer Code dank der Fähigkeit, einen Aspekt mit dem Code zu haben, der sonst in mehrere Klassen implementiert (verstreut) würde
  • Fähigkeit, einer Klasse Verhalten hinzuzufügen, ohne Code einzuführen, der nicht mit ihrer Hauptverantwortung zusammenhängt
  • Möglichkeit, die Semantik von Methoden / Klassen neu zu definieren, ohne Client-Klassen darüber zu informieren

Nachteile

  • Laufzeit-Overhead bei Verwendung einiger Konstrukte, z. B. cflow
emittieren
quelle
0

Nachteil: Schlechte Unterstützung der Toolkette: - Debugger und Profiler kennen die "aspektorientierte Programmierung" möglicherweise nicht, da sie möglicherweise mit Code arbeiten, als ob alle Aspekte durch prozeduralen Code ersetzt worden wären.

user148488
quelle