Ist es eine gute Idee, Aspekte als eine Methode zu verwenden, um defensive Checks von der Anwendungslogik zu entfernen?

8

Art eines langen Titels, aber das ist in der Regel die Frage.

Ich möchte wissen, ob Sie es für eine gute Idee halten, folgendes zu tun.

Anstelle von:

%Vor%

Ich möchte etwas haben wie:

%Vor%

Glaubst du, das ist gut / schrecklich / zu ausgefallen / zu langsam? Wenn Sie wirklich denken, dass es gut ist, dachte ich daran, SpEL zu implementieren Hat jemand etwas besseres / leichter / schneller im Kopf?

Danke,

    
Simeon 17.02.2012, 13:06
quelle

5 Antworten

3

Es ist nicht unbedingt eine schlechte Sache, aber Ihr einfacher Fall kann gut mit Ausnahme Anweisungen ( statt Behauptungen , die ich anfangs erwähnte).

Es scheint so, als würden Sie eigene Annotationen einführen, die andere Entwickler in Ihrem Projekt akzeptieren und anpassen müssen. Sobald Sie jedoch Anmerkungen eingeführt haben, scheint es, als wäre ein normaler Proxy -Ansatz ein besserer Kandidat, um das Problem zu lösen.

Um es zusammenzufassen: Das Problem, das Sie beschrieben haben, kann leicht mit Standard-Java-Alternativen gelöst werden, obwohl es in einem komplexeren Fall gerechtfertigt sein könnte (z. B. @Secured in Spring-Sicherheit), besonders wenn Sie Ihre entwickeln eigenes Framework .

    
Johan Sjöberg 17.02.2012, 13:10
quelle
2

Ich denke, es ist

  • overengineering
  • Umkapselung zu brechen, indem man sich auf einen externen Aspekt verlässt (der da sein könnte oder nicht), um Invarianten des Objekts
  • zu erhalten
  • verwirrend
  • nicht effizient
  • keinen Wert hinzufügen

Ich verwende gerne Guavas Vorbedingungen Klasse für solche Prüfungen. Darüber hinaus sind solche Prüfungen Teil der Geschäftslogik, IMHO.

    
JB Nizet 17.02.2012 13:11
quelle
2

Ich denke, du meintest Anmerkungen, keine Aspekte. Aspekte sind normalerweise außerhalb des Codes, den sie beraten. In jedem Fall können Sie die Art von Validierungen durchführen, die Sie in Ihrem Beitrag mit JSR 303 hervorgehoben haben. Ein typischer Fall:

%Vor%

Derzeit gibt es zwei bekannte Implementierungen von JSR 303:

Perception 17.02.2012 13:33
quelle
1

Es sieht wie Validierung aus. Zu Ihrer Information, mehrere Frameworks sind bereits vorhanden, lesen Sie diese Frage und OVal zum Beispiel.

Ich weiß nichts über Aufführungen, aber für mich ist es nicht übertrieben: Sie behalten nur den logischen Code. Ich arbeite gerne damit.

    
Matthieu Napoli 17.02.2012 13:13
quelle
0

Ich würde den Java-Ansatz vorziehen.

  1. es ist ein Standard-Ansatz, so dass alle (die meisten?) Java-Programmierer es verstehen werden. Automatisierte Werkzeuge usw. können ebenfalls analysiert werden.
  2. Sie müssen nichts selbst entwickeln. Ich weiß, es sieht trivial aus, aber diese Dinge haben die Angewohnheit zu eskalieren.

Wenn Sie nicht nachweisen können, dass Ihr Ansatz offensichtlich besser ist oder etwas anderes tut, würde ich die Werkzeuge und APIs verwenden, die Java standardmäßig zur Verfügung stellt.

    
Brian Agnew 17.02.2012 13:11
quelle

Tags und Links