2012-01-23 17 views
1

私は最近、より抽象的なクラスとインタフェースをよりわかりやすい方法で命名することを実験しています。主に意図した目的から外れないようにしてください。インタフェースと抽象クラスの記述的命名規則

だから抽象クラスのI代わりIOperationManagerの、例えば

IPerformインターフェイスICAN又はためISANISA又はを使用しています。 ICanPerformOperationManagement

これは、クラスを見たときに読みやすくなっています。

私はこのように考えるのは初めてではなく、誰かがインターフェイスと抽象クラスのためのどんなソートの記述的な命名規則を使用していたのだろうかと疑問に思いましたか?それは大規模なプロジェクトに拡大するのか、それとも混乱を招くだけなのでしょうか?

EDIT:この質問はあまりにも主観的ですか?

+0

オブジェクト名* IS *の説明としてインターフェイスに名前を付けようとしがちですが、あなたの例ではIOperationManagerが使用されます。 – asawyer

+0

おそらくプログラマーに適しています。 – Nix

+0

"この質問はあまりにも主観的ですか?"もしあなたが尋ねなければならないのなら...おそらくそれはプログラマにも当てはまるとは思わないが... – BoltClock

答えて

2

私の場合は、短く説明的なので、名前の重複する用語を削除しています。プロパティとメソッドは、行うことができるはず何を記述する - 最初の場所でのインターフェイスの非常に使用がいることを記述しているので

は個人的には、インタフェース名にCanまたはPerformを含める必要が表示されません。このように考えると、のタイプにはICantPerform...がありますか?はインターフェイスを実装していますか?もちろん違います;インタフェースは実装されているか、またはそこには存在しません。

インターフェイスが何であるかを開発者が理解していれば、これを理解します。彼らがしなければ;彼らは彼らがするまでインタフェースを使用すべきではありません。

抽象型と同じです。 IsAまたはIsAnは、冗長性があります。これは、型が継承するとすぐに関係が完了するためです。 Dr. Andrewが言っているように(+1)、Baseという接尾辞は、実装する抽象的な動作があることを意味するので便利です(BCLの残りの部分にもうまく適合します)。

私の場合、IOperationManagerは意味があります。 ICanPerformOperationManagementはきついです。

+0

+1あなたに戻ります –

2

Abtractクラスは、ベースを追加する傾向があります。たとえば、ViewModelBaseまたはNodeBaseです。

インターフェイスの場合、私はオブジェクトを記述する傾向がありますので、ICanPerformOperationManagementではなくIOperationManagerです。それは私がときどきかなり退屈なインターフェイスをIDrawableからもっと興味深いものに変更したと言われています。ICanBeDrawn

開発者がコードベースをどのように使用するかを考えてみましょう。あなたがintellisenseに縛られていて、あなたがOperationManagerと呼ばれるクラスを持っていることを知っているなら、あなたはそのインターフェイスがIOperationManagerであると予想します。まず最初に、I..C..a..n..P..e..などを入力する必要があると推測します。

+0

BaseViewModel/ViewModelBaseも使用する傾向がありますが、 ViewModelBaseBaseまたはActualViewModelBaseになっていますか?それで、Baseを離れてViewModelと呼んでください。もし私がwheaterを知る必要があるなら、抽象であるかどうかは、どのIDEでも簡単です。 –

+0

@ ToniParviainenはい、クラスの命名の際に「ある程度の感覚」が必要です。十分であれば、あなたは手を出すことができます。オール。個人的には、私は 'ViewModelBase'を持っていますが、' SomeSpecificFunctionalityButStillAbstractViewModel'として派生していますが(まだ抽象型です)と言います。すべてのvmsは 'ViewModelBase'を継承する必要がありますが、' SomeSpecificFunctionalityButStillAbstractViewModel'のすべてではありません。しかし、正しい方法はありません。結論だけで何がうまくいくのですか –