Java抽象クラスの命名


9

例:

Ajaxアクションの抽象クラスを作成します。異なるAjaxアクションはすべてこのクラスを拡張します。

問題:

  1. クラスにAjaxActionまたはAbstractAjaxActionという名前を付けますか?
  2. サブクラスを作成するとき、名前を付けますか?
    • アクション
    • AjaxAction
    • 彼らに彼らが何であるかという名前をつけてください

私は「公式の」大会が何であるかを見つけることができませんでした。サブクラスで"Abstract"プレフィックスまたは必要な命名規則が必要ないようです。(とにかくそれは合うかもしれません。)

公式大会はありますか?リンクしてくれませんか?そして、この問題についてのあなたの意見は何ですか?

回答:


16

可能な場合は、抽象クラスまたはインターフェースの接頭辞/接尾辞を含め、実装の詳細を名前に残さないようにしています。

命名に関するガイダンス/インスピレーションを探す1つの場所は、Java APIです。接頭辞を使用する部分は考えられません(大きな接頭辞は、抽象接頭辞を頻繁に使用するコレクションAPIです)。次の検索では、かなり良い例がいくつか得られます。

「public abstract class」(download.oracle.com/javase/6)

抽象クラスは抽象的な名前が付けられ、具象サブクラスはより具体的な名前が付けられます。例えば、抽象クラスはReader具象サブクラスを持っているBufferedReaderStringReaderInputStreamReader、など

具体的なサブクラスは抽象クラスのより具体的なバージョンなので、同じ方法で名前を選択することを意図しています。あなたの例では、私は抽象クラスAjaxActionに名前を付け、それを具象サブクラスの名前に使用します(SpecificAjaxAction)。


12

何かを選択、一貫している。Base意図する基本クラスを示すために接尾辞を使用するか、それとも接頭辞を使用するかにかかわらず、それAbstractについて一貫している必要があります。

この種のことについては、プログラマーと同じくらい多くの意見があります。私の意見は、プロジェクト(または開発グループなど)内でのネーミングの一貫性として、特定のネーミングスキーマよりも重要であるためです。


4

抽象クラスAjaxActionBaseとサフィックスの子クラスには、 'Action'または 'AjaxAction'のいずれかを指定します。いずれかを作成するのに必要なアクションがより自然に読みやすくなります。


0

単純だが非常に重要な理由から、クラスは名前の中に抽象であるというヒントを入れたいと思います。

  • 抽象クラスではなく、インターフェースを中心にAPIを構築することをお勧めします。
  • インターフェースに名前を付けるには、「アクション」などの単純な名前を使用します。たとえば、JavaコレクションAPIのリストまたはマップを参照してください。これらはすべてインターフェースです。

したがって、私は通常、最上位の抽象クラスをAbstractActionまたはBaseActionのいずれかで呼び出します。非常に具体的なニーズがない限り、私は通常これらを公開しないので、コードのユーザーはインターフェースを使用するように誘導されます。抽象基本クラスは通常、APIの機能ではなく、実装の詳細である必要があります。ただし、人々がどのように拡張するかについて非常に注意深い場合は除きます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.