質問

私のプロジェクトでは、ゆっくりとJavaアノテーションを実施しています。開発者の半分 - 私自身は含まれ - 注釈と、複雑な何もすることは、当社の全体的なメンテナンスの負担に追加するらしいことがわかります。チームの残りの半分は、彼らは蜂の膝だと思います。

開発者のチームは、注釈付きのコードを維持することができることで、あなたの現実世界での経験は何ですか?

役に立ちましたか?

解決

クラスの「依存」を提供するために、クラス対注釈の「説明」を提供するために、注釈 -

私はそれが注釈の2つの用途に侵入感じます。

私はクラスの注釈の「説明」を使用して大丈夫だよ - それはクラスに属する何かだと注釈はその簡略版を作るのに役立ちます - JPAのアノテーションは、この下に落ちます。

しかし、私は本当に「依存」注釈好きではない - あなたは、クラスに直接依存関係を入れている場合 - それは、注釈からではなく、クラスのコンパイル時に実行時に決定されます場合でも - ではありません依存性注入を壊すこと? (多分精神ではなく、ルールで...)

これは個人的な好みかもしれないが、私はのようにの自分のアプリケーションのすべての依存関係の情報が含まれている一つの大きなXMLファイル - 私は「アプリケーション設定」ではなく「クラス構成」としてこれを見ます。私はむしろ、アプリ内のすべてのクラスを検索より1既知の場所を検索思います。

他のヒント

私の個人的な経験は、平均して、注釈に対処することはあなたの標準的なJava XMLコンフィギュレーション地獄を扱うよりも、ほとんどの開発者にとってはるかに容易である、ということです。 JPAとSpringのテストのようなもののために、彼らは絶対的なライフセーバーです。

注釈の良いところは、彼らはあなたのクラスの自己文書化の設定を作ることです。さて、代わりにしようとすると、フレームワークは、あなたのクラスを使用している方法を理解するために巨大なXMLファイルを検索するので、あなたののクラスのがわかります。

通常、このような変更を伴う問題は、それらに慣れるには、単純に時間がかかるということです。開発者を含めほとんどの人は、変化に抵抗します。私は春に仕事を始めたとき、私は覚えています。誰もがそれに関連付けられている頭痛を我慢する理由最初の数週間は、私は疑問に思いました。その後、数週間後、私は私が今までそれなしに住んでいただろうか疑問に思います。

私は絶対のの注釈。私は、Hibernate / JPA、シーム、JAXB ....私ができるものから、それらを使用しています。 IMOちょうどクラスの処理方法を見つけるためにXMLファイルを開くことよりも悪いものは何もありません。

私の目の注釈には、クラスが自身のために話すことができます。 XMLの設定を自分で通常あるのに対し、また注釈は、あなたのIDEのコンテンツの(たぶん)の部分が支援されます。

しかし、これは、XMLコンフィグと注釈が実際に(多くは両方を提供するように)特定のライブラリで使用されている、と注釈のどのような使われ方に降りてくることがあります。私はビルド固有の何かを定義する注釈が(例えば、ファイル/ URLパス)実際にXMLの設定などが容易であり得ることを想像することができます。

これは、IDEのサポートに非常に依存しています。私は注釈がIDEでのチェックを介したコードと同期して保管しなければならないが、このためにそのサポートがやや欠けていると感じています。

例えば。 IDEAの古いバージョンでは、@Overrideせずに機能をオーバーライド場合は警告するだろうが、あなたはメソッドのシグネチャ変更された場合(またはスーパー署名をそのことについては、)@Overrideタグを削除しないであろうと関係を壊します。

のサポートがなければ、私は彼らのコードにメタデータを追加するための面倒な方法を見つけるます。

私は個人的にあなたが言及した特定のユースケースと感じる(Webフォームを自動生成)の注釈のための偉大なユースケースです。あなたが単純化されたコードを書くとフレームワークをさせることができ、「フレームワーク」のシナリオの任意の並べ替えは、(多くの場合、繰り返しの)いくつかの提案(別名注釈)をもとに持ち上げ重いが、私が思うに、注釈のための理想的なユースケースでください。

あなたは、なぜ私はのないのこのような状況では、注釈、そして何を「メンテナンス負担」であることを考えるように興味? (と、私はちょうどそれを理解して、自分の位置を侮辱するつもりはないよ)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top