FileHandler
作成するさまざまなクラスやインターフェースにはどのように名前を付けますか? インターフェースやクラスなど、実装名に追加する実装情報がない場合がありますSqlFileHandler
。
このような場合、私は通常、 のように「通常の」名前でインターフェースに名前を付け、Truck
実際のクラスに名前を付けますTruckClass
。
この点に関して、インターフェースとクラスにはどのように名前を付けますか?
ベストアンサー1
Interface
それが何であるかを名前で呼んでください。それが ではないからでTruck
はなく、それが であるからです。ITruck
ITruck
Truck
JavaInterface
の はタイプ. 次にDumpTruck
、、、、などTransferTruck
が存在します。WreckerTruck
CementTruck
implements Truck
Interface
サブクラスの代わりにを使用する場合は、にキャストするだけですTruck
。 のようにList<Truck>
。 をI
前に置くのは、ハンガリースタイルのシステム表記トートロジーコードに入力する内容が増えるだけです。
最近のJava IDEはインターフェースや実装などをこの馬鹿げた表記法なしでマークしますTruckClass
。トートロジートートロジーと同じくらい悪いですIInterface
。
実装であれば、それはクラスです。このルールの唯一の本当の例外は、そして常に例外はありますが、 のようなものになりますAbstractTruck
。サブクラスだけがこれを認識し、クラスにキャストしてはならないため、クラスが抽象クラスであり、どのように使用すべきかについての情報が追加されます。 が定義内にあるため、Abstract
よりも良い名前を考え出すこともできますし、代わりに またはAbstractTruck
を使用することBaseTruck
もできます。しかし、クラスは公開インターフェースの一部であってはならないため、これはルールの許容可能な例外であると私は信じています。コンストラクターを作成することは、この溝を越えるのに大いに役立ちます。DefaultTruck
abstract
Abstract
protected
そして、接尾辞は単なるノイズです。トートロジーが増えます。インターフェースではないものはすべて実装であり、部分的な実装である抽象クラスでさえも実装です。すべての名前にImpl
このばかげた接尾辞を付けますか?Impl
クラス?
Interface
は、パブリックメソッドとプロパティがサポートしなければならない内容に関する契約であり、タイプTruck
情報も同様です。実装するものはすべてタイプのTruck
。
Java標準ライブラリ自体を見てください。、、が見えますかIList
?ArrayListImpl
いいえLinkedListImpl
、、、が見えていますList
。ArrayList
ここLinkedList
に良い例があります。記事この質問について。これらのばかげた接頭辞/接尾辞の命名規則はすべて、ドライ原則も同様です。
また、、、その他のくだらない繰り返し接尾辞をオブジェクトに追加していることに気付いた場合はDTO
、それらはおそらくJDO
BEAN
パッケージそれらすべてのサフィックスの代わりに、適切にパッケージ化された名前空間は自己文書化されており、ほとんどの場所では内部的に一貫した方法で遵守されていない、非常に考えが不十分な独自の命名スキーム内のすべての無駄な冗長情報を削減します。
Class
名前をユニークにするために を末尾に付けるしか思いつかない場合はImpl
、 を使用すること自体を再考する必要がありますInterface
。 があり、とは一意に区別されないInterface
1 つの がある場合、ほとんどの場合 はおそらく必要ありません。Implementation
Interface
Interface
ただし、一般的に保守性、テスト性、モック化のためには、インターフェースを提供するのがベストプラクティスです。詳細についてはこの回答をご覧ください。
このトピックに関するマーティン・ファウラーの興味深い記事も参照してください。インターフェース実装ペア