Wartbarkeit von Java-Annotationen?

8

Mein Projekt implementiert langsam Java-Anmerkungen. Die Hälfte der Entwickler - ich selbst eingeschlossen - ist der Ansicht, dass das Hinzufügen von komplexem Material mit Anmerkungen unseren Wartungsaufwand insgesamt erhöht. Die andere Hälfte des Teams denkt, dass sie die Knie der Biene sind.

Was ist Ihre Erfahrung in der Praxis, wenn Entwicklerteams annotierten Code pflegen können?

    
Dean J 08.10.2009, 14:10
quelle

5 Antworten

4

Ich fühle, dass es in zwei Verwendungen von Annotationen einbricht - Annotationen, um eine "Beschreibung" einer Klasse gegen Annotationen zu liefern, um eine "Abhängigkeit" der Klasse zu schaffen.

Mir geht es gut mit einer 'Beschreibung' der Verwendung von Annotationen für die Klasse - das gehört zur Klasse und die Annotation hilft dabei, eine Kurzversion daraus zu machen - JPA-Annotationen fallen darunter.

Ich mag jedoch die "Abhängigkeits" -Anmerkungen nicht wirklich - wenn Sie die Abhängigkeit direkt auf die Klasse anwenden - selbst wenn sie zur Laufzeit von einer Anmerkung statt zur Kompilierungszeit in der Klasse bestimmt wird - nicht diese Breaking Dependency-Injektion? (vielleicht eher im Geiste als in der Regel ...)

Es mag persönliche Präferenz sein, aber ich mag die einzige große XML-Datei, die alle Abhängigkeitsinformationen meiner Anwendung enthält - ich betrachte dies als Anwendungskonfiguration und nicht als Klassenkonfiguration. Ich würde lieber den einen bekannten Ort durchsuchen, als alle Klassen in der App zu durchsuchen.

    
Nate 08.10.2009, 15:33
quelle
6

Meine persönliche Erfahrung ist, dass der Umgang mit Annotationen im Durchschnitt für die meisten Entwickler einfacher ist als der Umgang mit Ihrer Standard Java XML Configuration-Hölle. Für Dinge wie JPA- und Spring-Tests sind sie absolute Lebensretter.

Das Gute an Annotationen ist, dass sie die Konfiguration Ihrer Klassen selbstdokumentieren. Anstatt nun eine riesige XML-Datei durchsuchen zu müssen, um herauszufinden, wie ein Framework Ihre Klasse verwendet, sagt Ihnen Ihre Klasse .

Normalerweise ist das Problem bei solchen Änderungen, dass man sich an sie gewöhnen muss. Die meisten Menschen, einschließlich der Entwickler, widersetzen sich dem Wandel. Ich erinnere mich, als ich anfing, mit Spring zu arbeiten. In den ersten Wochen fragte ich mich, warum jemand die damit verbundenen Kopfschmerzen ertragen würde. Dann, ein paar Wochen später, fragte ich mich, wie ich jemals ohne es gelebt hatte.

    
rtperson 08.10.2009 14:13
quelle
0

Ich liebe Annotationen. Ich benutze sie aus Hibernate / JPA, Seam, JAXB .... alles was ich kann. IMO gibt es nichts Schlimmeres, als eine XML-Datei öffnen zu müssen, nur um herauszufinden, wie eine Klasse gehandhabt wird.

Zu meinen Augen Anmerkungen erlauben einer Klasse, für sich selbst zu sprechen. Auch Annotationen sind (hoffentlich) Teil Ihrer IDEs-Inhalte, während bei XML config Sie normalerweise auf sich selbst gestellt sind.

Es kann jedoch darauf hinauslaufen, wie die XML-Konfigurationen und -Anmerkungen tatsächlich von einer bestimmten Bibliothek verwendet werden (wie die meisten beide anbieten) und welche Art von Anmerkung verwendet wird. Ich kann mir vorstellen, dass Annotationen, die etwas definieren, das Build-spezifisch ist (zB Datei- / URL-Pfade), einfacher als XML-Konfiguration sein können.

    
Damo 08.10.2009 17:00
quelle
0

Es hängt stark von der IDE-Unterstützung ab. Ich finde, dass Annotationen über Checks in der IDE mit dem Code synchron gehalten werden sollten, aber die Unterstützung dafür fehlt etwas.

z. Die ältere Version von IDEA würde Sie warnen, wenn Sie eine Funktion ohne @Override überschreiben, aber das @Override-Tag nicht entfernen würden, wenn Sie die Methodensignatur (oder die Signatur der Superklasse) geändert hätten und die Beziehung abgebrochen hätten.

Ohne Unterstützung finde ich sie eine mühsame Möglichkeit, Metadaten zum Code hinzuzufügen.

    
Alex Feinman 08.10.2009 17:01
quelle
0

Ich persönlich finde, dass der von Ihnen erwähnte spezifische Anwendungsfall (Web-Formulare automatisch generieren) ein großer Anwendungsfall für Anmerkungen ist. Jede Art von "Framework" -Szenario, in dem Sie vereinfachten Code schreiben können und das Framework das heftige (oft wiederholte) Anheben aufgrund einiger Vorschläge (auch Annotationen genannt) machen lässt, ist meiner Meinung nach der ideale Anwendungsfall für Annotationen.

Ich bin neugierig, warum Sie Anmerkungen in dieser Situation nicht mögen und was Sie als "Wartungsaufwand" betrachten? (Und, ich versuche nicht, deine Position zu beleidigen, verstehe es einfach).

    
james 08.10.2009 18:03
quelle