Question

Mon projet met en œuvre lentement annotations Java. La moitié des développeurs - moi y compris - trouver que faire quoi que ce soit complexe avec annotations semble ajouter à notre charge de l'entretien général. L'autre moitié de l'équipe pense qu'ils sont les genoux de l'abeille.

Quelle est votre expérience dans le monde réel avec des équipes de développeurs étant en mesure de maintenir le code annoté?

Était-ce utile?

La solution

Je pense qu'il se casse en deux utilisations d'annotations - annotations pour fournir une « description » d'une classe par rapport annotations pour fournir une « dépendance » de la classe.

Je suis très bien avec une utilisation « description » des annotations sur la classe - qui est quelque chose qui appartient à la classe et l'annotation aide à faire une version abrégée de cette - annotations JPA relèvent de cette.

Cependant, je ne suis pas vraiment comme les annotations de dépendance « » - si vous mettez la dépendance directement sur la classe - même si elle est déterminée lors de l'exécution d'une annotation plutôt qu'au moment de la compilation dans la classe - n'est pas que la rupture injection de dépendance? (Peut-être dans l'esprit plutôt que la règle ...)

Il peut être de préférence personnelle, mais je comme le seul gros fichier XML qui contient toutes les informations de dépendance de ma demande - je considère cela comme « configuration de l'application » plutôt que « la configuration de la classe ». Je préfère une recherche parmi l'un endroit connu de la recherche à travers toutes les classes dans l'application.

Autres conseils

Mon expérience personnelle est que, en moyenne, traitant des annotations est beaucoup plus facile pour la plupart des développeurs que de traiter avec votre norme Java XML enfer Configuration. Pour des choses comme JPA et le test du printemps, ils sont sauver la vie absolue.

La bonne chose au sujet des annotations est qu'ils font sur votre configuration des classes autodocumenté. Maintenant, au lieu d'avoir à chercher dans un énorme fichier XML pour essayer de comprendre comment un cadre utilise votre classe, votre class vous dit.

En général, la question des changements comme celui-ci est que pour s'y habituer les prend simplement du temps. La plupart des gens, y compris les développeurs, résistent au changement. Je me souviens quand je commencé à travailler avec le printemps. Pour les premières semaines, je me demandais pourquoi quelqu'un voudrait mettre en place avec les maux de tête associés. Puis, quelques semaines plus tard, je me suis demandé comment je pu vivre sans.

Je absolument amour annotations. Je les utilise à partir Hibernate / JPA, Seam, JAXB .... tout ce que je peux. OMI il n'y a rien de pire que d'avoir à ouvrir un fichier XML juste pour savoir comment une classe est gérée.

Pour mes annotations oculaires permettent une classe de parler pour lui-même. Aussi les annotations sont (je l'espère) une partie de votre contenu IDEs aider, alors qu'avec configuration XML vous habituellement sur votre propre.

Cependant, il peut venir à la façon dont les configs XML et les annotations sont effectivement utilisés par une bibliothèque particulière (comme la plupart offrent à la fois), et quel type d'annotation est utilisée. Je peux imaginer que les annotations qui définissent quelque chose qui est la construction spécifique (par exemple. Chemins fichier / url) peut-être plus facile que configuration XML.

Il dépend fortement de support IDE. Je pense que les annotations doivent être en synchronisation avec le code via des contrôles dans l'EDI, mais que le soutien à ce manque un peu.

par exemple. l'ancienne version de IDEA avertirait si vous une fonction sans redéfini @Override, mais ne supprimerait pas l'étiquette @Override si vous avez modifié la signature de la méthode (ou la signature superclasse, pour cette matière) et ont brisé la relation.

Sans soutien, je les trouve un moyen lourd d'ajouter des métadonnées au code.

Je pense personnellement que le cas particulier de l'utilisation que vous avez mentionné (formulaires Web générer automatiquement) est un cas d'utilisation pour les annotations. toute sorte de scénario « cadre » où vous pouvez écrire du code simplifié et laisser le cadre faire le levage de charges lourdes (souvent répétitif) à partir de quelques suggestions (alias annotations) est, je pense, le cas d'utilisation idéale pour les annotations.

Je suis curieux de savoir pourquoi vous ne pas comme annotations dans cette situation, et ce que vous considérez comme la « charge d'entretien »? (Et je ne veux pas insulter votre position, comprendre juste).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top