Immer wenn Ihnen jemand sagt, dass eine Softwaretechnologie eine andere tötet oder den gesamten Markt / die Nutzung / das Publikum dominiert, denken Sie daran:
Ein gesundes (dynamisches, aber stabiles) Ökosystem besteht aus einer Vielzahl sehr unterschiedlicher Arten.
Das bedeutet, dass jede neue hyped Technologie die Hype-Kurve durchläuft und am Ende durch Zeit und Erfahrung ihren spezifischen Zweck findet.
Das bedeutet auch, dass ein so extremes Konzept wie die aspektorientierte Programmierung nützlich ist, wenn es benötigt wird, was bedeutet, dass es aufgrund impliziter Kosten nicht immer und nicht sehr oft vorkommt.
Aber es hat bereits seinen Platz, wie OOProgramming, wie generische Programmierung, wie funktionale Programmierung, wie prozedurale Programmierung usw.
Haben Sie bemerkt, dass die Sprachen, die am häufigsten verwendet (und kontrovers populär) und im wirklichen Leben weit verbreitet sind, "nicht rein" sind? Das liegt daran, dass sie durch das Zulassen mehrerer Paradigmen flexibler werden, um den Kontext im Laufe der Zeit zu ändern, und mehr Nutzungsnischen füllen.
OOP wird nicht wegen AOP sterben. AOP bietet einen gewissen Mehrwert, lebt jedoch in perfekter Koexistenz mit OOP. Ich denke nicht, dass funktionale Programmierung OOP töten wird. OOP ist für viele Arten von Problemdomänen zu gut geeignet. Es wäre nicht sinnvoll, es durch das Funktionsparadigma zu ersetzen.
quelle
Paradigmen kommen und gehen, aber Legacy-Code ist für immer. Es wird immer C ++ - Code zu warten geben, so dass OOP niemals vollständig aussterben wird.
quelle
Kurze Antwort: Nein, das glaube ich nicht.
Längere Antwort: Soweit ich AOP verstehe, handelt es sich nicht um ein Programmierparadigma an sich (wie in, es ersetzt nicht OOP), sondern eher um eine Ergänzung, ein Toolkit, mit dem Sie kürzere Methoden und einfachere Klassen mit einfacher Verantwortung schreiben können , und so weiter. Aber es ersetzt nicht OOP.
Die Sache , die (zumindest teilweise) ersetzt oder erweitert OOP ist funktionale Programmierung, die eigentlich ist eine andere Programmierparadigma (obwohl es mit OOP gemischt werden kann, beispielsweise in der Scala Programmiersprache ). Es bevorzugt unveränderliche Datenstrukturen und alle Arten von ausgefallenen Funktionen, die OOP-Entwickler eher frustrieren, insbesondere wenn es um Parallelität geht.
quelle
OOP wird heutzutage weniger erwähnt, da es in vielen Situationen als De-facto-Ansatz angenommen wird. AOP kam nie als Massenbewegung auf den Boden.
quelle
Ich erinnere mich, dass ich zum ersten Mal in einem OOPSLA '97 -Tutorial von aspektorientierter Programmierung gehört habe. Sie sagten, es würde OO schon damals töten. Seitdem ist OO nur über die wildesten Erwartungen hinaus gewachsen. AOP ist noch kaum bekannt und hat im Wesentlichen keine Auswirkungen auf die Computerbranche. Ich denke, die Antwort liegt auf der Hand, dass AOP kein OO-Killer ist.
quelle
Schauen Sie sich einige vorhandene AOP-Systeme an. Sie hängen davon ab, dass Sie Code in irgendeiner Form geschrieben haben. Spring AOP setzt beispielsweise voraus, dass Sie Ihre Methoden für eine Klasse definiert haben. Castle Windsor unterstützt es in C #, einer objektorientierten Sprache.
Sie könnten theoretisch von OOP zu strukturierter Programmierung wechseln und trotzdem AOP beibehalten, aber in der Praxis wäre das schwierig. Es ist einfach, eine Unterklasse zu erstellen, die entsprechende Methode zu überschreiben, um die entsprechenden Vorher / Nachher-Filter aufzurufen, und diese im Verlauf der Abhängigkeitsinjektion weiterzugeben.
Es ist verdammt schwer im Vergleich zum Umschreiben statischer Methodenaufrufe, um zu einer Trampolinmethode zu gelangen, mit der die benutzerdefinierten Filter aufgerufen werden.
Von einem gemeinsamen Implementierungsstandpunkt aus erfordert AOP OOP.
quelle
Während OOP sicherlich keine Silberkugel ist, kann das gleiche für AOP gesagt werden. Es unterstützt das komponentenbasierte Design. Im größeren Schema sind Ihre Komponenten jedoch die neuen Objekte, und die Komponentenschnittstellen sind im Grunde genommen eine Transaktionsliste von Methoden, was NICHT wahr ist.
Weiteres AOP und komponentenbasiertes Design unterstützen ein anämisches Datenmodell, an dem klügere Leute als ich Kritik üben.
http://martinfowler.com/bliki/AnemicDomainModel.html
(Ich weiß, der obige Artikel ist alt, aber überraschend relevant)
Das Fazit ist, dass AOP-Systeme hier bleiben werden, aber sie sind auch alles andere als perfekt. Kein System ist perfekt.
quelle