ホームページ  >  記事  >  Java  >  静的フィールドを使用したインターフェイス: コードの匂いはありますか?

静的フィールドを使用したインターフェイス: コードの匂いはありますか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-31 09:17:01607ブラウズ

 Interfaces with Static Fields: Are They a Code Smell?

静的フィールドを含むインターフェイス: 不注意な人の罠

Java 開発者は、「定数」として使用される多数の静的フィールドを含むインターフェイスに遭遇することがよくあります。この手法は便利に見えるかもしれませんが、一般的に悪い習慣として嫌われています。

このアプローチの主な問題は、コード全体に定数が急増することです。クラスを実装すると、内部でのみ使用される場合でも、すべての静的フィールドがパブリック インターフェイスの一部になります。たとえば、SwingConstants インターフェイスは多くのクラスによって実装されており、その広範な定数リストが無差別にすべてのクラスに公開されています。

ソフトウェア アーキテクトの Josh Bloch も、このパターンに対して警告しています。

「定数インターフェイスを実装すると、 [実装の詳細] クラスのエクスポートされた API に漏洩する可能性があります」と彼は述べています。 「これはコミットメントを表します。将来のリリースで定数を使用する必要がなくなるようにクラスが変更された場合でも、バイナリ互換性を確保するためにインターフェイスを実装する必要があります。」

このパターンの代替案には、次の使用が含まれます。列挙型を使用するか、インスタンス化不可能なクラスのパブリック静的フィールドとして定数を定義します。これらのメソッドを使用すると、他のクラスは、独自の API を乱雑にしたり、カプセル化の原則に違反したりすることなく、定数にアクセスできます。

結論として、静的フィールドを使用したインターフェイスは、何らかの有用性を提供しているように見えますが、不必要な複雑さと潜在的なメンテナンスの問題を引き起こします。定数を扱うときは、より適切で保守しやすいオプションとして、列挙型またはインスタンス化不可能なクラスの使用を検討してください。

以上が静的フィールドを使用したインターフェイス: コードの匂いはありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。