Java for:のコード規約についてチームでこの議論を行っています。
interface
:Foo
またはIFoo
またはFooInterface
?
abstract
:Foo
またはAbstractFoo
?
Enums
:Foo
またはFooEnum
?
私は基本的に個人的な好みを脇に置いているので:)いずれかのコンベンションをバックアップする理由は大歓迎です。
Javaの場合:Foo
、AbstractFoo
、およびFoo
-ただし、AbstractFoo
はFoo
の場合もあります。
証拠:
Java.util.List
(インターフェース)Java.util.AbstractList
(抽象クラス)Java.util.Formatter.BigDecimalLayoutForm
(列挙型)インターフェイスの部分については、Javaコーディング規約ドキュメントの 命名規則 セクションを参照してください。ただし、列挙型と抽象クラスについては説明していません。
インターフェース:Foo
理由:コードは、インターフェースを処理していることを知る必要はありません。 'IFoo'を書くことはまさにそれをします。代わりに、Fooは、「Foo」が汎用であり、その背後にあるオブジェクトが「NumFoo」または「StrFoo」である可能性があることを明確にしています。コードは本当に気にする必要はありません。
抽象クラス:AbstractFoo
理由:コードがこのクラスを直接使用することはありません。他のコードで使用されるクラスを作成するには、常にこのクラスをサブクラス化します。したがって、クラスが抽象的なクラスであることは、プログラマーにとって十分に明確でなければなりません。そして、それを抽象と名付けるためのより良い方法は何でしょう! AbstractFooタイプの参照を使用する必要がある場所では、代わりにインターフェイスの使用を再検討する必要があります。 (もちろん、これはC++では不可能です)
列挙型:FooTypeまたはFooEnum。個人的には、FooTypeの方が優れています。これは、TypeがEnumよりも「現実の世界」に簡単に関連付けられるためです。
乾杯!
から 私のブログ :
ブログでは、他のいくつかの名前に対する理由についても説明しています。
特別な規則はありません。
これらの種類のクラスに特別な命名規則を設定することは、基本的にハンガリアン記法(悪い種類)の形式です。それが提供する情報はすでに構文に存在し、通常はIDEで簡単に利用できます。名前にカーソルを合わせると。名前自体にそれを入れることは無意味で醜いです。
クラス名は、可能な限りクラスの役割を簡単に説明する必要があります。これcanは「自然な」命名規則につながります-非常に良い例はJava -able接尾辞(Iterable、Comparable)を持つインターフェースの命名規則です-しかし私はそれが普遍的に実施され、リスト、マップなどがそれに従わなければならなかった場合、結果を想像したくありません。
私の慣習:
インターフェイス名やFooInterfaceでIを使用するのは本当に嫌いです。
interface FooInterface {
書くようなものです:
class FooClass {
あるいは:
abstract class AbstractFooClass {
それは単にプロリックスです。
私の慣習:
Foo
;AbstractFoo
;Foo
ですが、状況によってはFooType
です。IFoo
は非常に.Netであり、Javaではありません。 FooInterface
私は使用されたのを見たことがありません。
私が個人的に好きなインターフェースに関して:
Fooable
インターフェースについて:
IFooはおしゃべりな名前で、すぐに推測できるので、私はIFooが好きです。次に、1つのクラスに対してのみインターフェイスを実行するモジュールなどの場合、クラスは多くの場合、インターフェイスと同じ名前になります。次に、Foo extendsIFooを使用できます。そうでなければ、まあ、あなたは名前を見つけなければならないでしょう。または、FooInterfaceなどを使用します…
前述のJava.util.listはFooを使用します。異なる概念のクラスが実装しているため、これは問題ありません。したがって、すでに異なる名前(ArrayList、LinkedList…)が提案されています。本当にIListを好むかどうかはよくわかりません。ダンノ…:P
これが、IONのDEVチームで使用されている変換です。
インターフェース
interface IMyInterface
:::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::
abstract class MyAbstract
:::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::
enum EMyEnumeration
:::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::