2

プロジェクトのサイズが大きくなるにつれて、同様の機能を持つクラス名の規則があるはずだと思います。

同様の機能を持つ3つのデータハンドラーがあり、唯一の違いはそれらが処理するデータ型であると仮定します。

インターフェースがありますDataHandler

interface DataHandler

データには、ビットマップ、ビデオ、サウンドの3種類があります。

より広く使用されている命名規則はどれですか?

オプション1。

class BitmapHandler

class VideoHandler

class SoundHandler

オプション2。

class DataHandlerBitmap

class DataHandlerVideo

class DataHandlerSound

音が良いので現在オプション1を使用していますが、オプション2を使用することにも利点があると思います。特に、プロジェクトのサイズが大きいです。クラス名をアルファベット順に並べ替えることで、存在するデータハンドラーの数を簡単に確認できます。また、IDEのインテリセンスを使用して、類似したタイプのクラスをすべて簡単に把握して使用できるようになります。

編集済み

c#タグを削除しました。C#とJavaの命名規則が異なるとは思えませんでした。

4

5 に答える 5

2

まず、インターフェイスの命名規則は次のようになります。

IDataHandler

次に、クラスは次のようになります。

class BitmapDataHandler
class VideoDataHandler
class SoundDataHandler

いずれにせよ、オプション#2はそれほど適切ではないと思います。プロジェクト内のクラスを検出するには、[すべての参照を検索]コマンドを使用します(たとえば、ReSharperを使用しない場合は、作業がはるかに簡単になります)。

于 2012-09-25T02:14:08.533 に答える
2

私の会社は非常に大規模な会社(フォーチュン30)であり、慣例ではオプション1に沿ったものを使用します。大規模なプロジェクトでも十分に説明的であり、より良いリングがあります。:)

オプション2は、セマンティック値を追加せずに、クラスの意味または目的をわかりにくくするためだけに使用されます。

于 2012-09-25T02:14:17.607 に答える
2

グループ化には名前空間を使用する必要があると思います。

さらに、プロジェクトのサイズがファイルの取得の妨げになる場合は、ReSharperを使用してください。それはあなたが非常に直感的な方法で部分的なファイルまたはクラス名を検索することを可能にします。適切なツールを使用することで、間違った理由で奇妙な基準を順守することを防ぎます。

于 2012-09-25T02:15:08.463 に答える
2

オプション1は私にとって最も理にかなっており、組み込みのJavaクラス全体で使用される規則のようです。たとえば、java.ioパッケージでは、

BufferedReader
CharArrayReader
InputStreamReader

のすべてのサブクラスですjava.io.Reader

オプション2は冗長なようです。たとえばclass DataHandlerXX implements DataHandler、IDEはのすべてのサブクラスを識別できる可能性がありDataHandlerます。つまり、共通の機能を決定するために並べ替えに依存する必要はありません。

于 2012-09-25T02:29:19.123 に答える
1

私の好みのオプションは、ここにある多くの答えの組み合わせです。

1)インターフェースはIで始まる必要がありIDataHandlerます。これは一般的な方法です。
2)Option1の後にクラスに名前を付けます。名前は構造を説明するものであってはなりません。このクラスは、いくつかのインターフェースを簡単に実装でき、それらすべてをリストするためにかなりの混乱をもたらし、要件/更新の変更のために新しいインターフェースを実装したり、インターフェースを削除したりするとどうなりますか。
3)名前空間を使用して同様のアイテムをグループ化します。これにより、設計の発見/理解が容易になります(オプション2で意図したとおり)。

これらを組み合わせると、物事がどのように機能するかはほとんど文脈から明らかです。

// create a context with the namespace
namespace Media.Decoders
{
  // start interfaces with an I
  IDataHandler { ... }

  // name classes descriptively 
  class BitmapHandler : IDataHandler
  class VideoHandler : IDataHandler
  class SoundHandler : IDataHandler
}

// example if these handlers were decoding media types
// imagine navigating through the structure section by section
MyLibrary.Media.Decoders.BitmapHandler
// if everything is grouped logically if I were looking for an encoder a natural place to look would be
MyLibrary.Media.Encoders.BitmapHandler
于 2012-09-25T02:44:11.777 に答える