web-dev-qa-db-ja.com

C#クラスの命名規則:基本クラスですか、それともクラスベースですか、抽象クラスですか

基本クラスの命名に推奨されるアプローチは何ですか?型名の前に「Base」または「Abstract」を付けるのですか、それとも単に「Base」で終わるのでしょうか?

以下を考慮してください。

タイプ:ViewModel例: MainViewModelReportViewModel

基本クラス:BaseViewModelまたはViewModelBaseまたはAbstractViewModel

以下も考慮してください。

タイプ:Product例: VirtualProductExpiringProduct

基本クラス:BaseProductまたはProductBaseまたはAbstractProduct

あなたはどちらがより標準だと思いますか?

class Entity : EntityBase
{
}

または

class Entity : BaseEntity
{
}
105
Soni Ali

フレームワークには、Baseサフィックス付きの例があります。 System.Configuration.Provider.ProviderBaseSystem.Web.SessionState.SessionStateStoreProviderBase

ただし、フレームワークのすべての抽象基本クラスがこの規則に従うわけではありません(例:System.Data.Common.DbParameterSystem.Data.Common.DbCommand)。

個人的には、接尾辞の使用を避けますnlessそれが抽象クラスであるという事実を強調したいと思います。

84
Joe

上記のどれでもない。基本クラスが提供する目的を検討してください。それに名前を付けます。たとえば、Automobile and Bicycleの基本クラスはVehicleです。

1つのクラスの基本クラスを持つためだけに基本クラスを作成し、それ以外の目的や理由がない場合、おそらく何か間違ったことをしていることになります。

42
Paul Sonier

それは選択の問題だと思います。多くの基本クラスを作成している場合は、常にBaseClassnameを使用することをお勧めしますインテリセンス。 20個のベースクラスがあり、ベースをサフィックスとして追加し、ベースクラスの名前を忘れた場合はどうなりますか?最初にVSからクラス図を作成し、使用可能な基本クラスを見つけますか?クラスが1つまたは2つのクラスである場合は、ClassBaseと名付けても大丈夫です。

GetItems関数とItemsGet関数の決定についても同様です。読みやすくするために、少なくともGetItemsにアクセスしてください。規則に従ってください:)

4
Abhishek

仮想ベースクラスについて話している場合、Microsoftの標準はClassnameBase(CollectionBaseなど)です。

4

BaseEntityを使用していますが、自分の好みだと思います。私は頻繁に他を見ます。

プロジェクト、名前空間、可能であればチームなど、コンテキスト内で一貫性を保ってください。異なる慣習は、悪い慣習よりも悪いです。

2
Gary.Ray

個人的には、Wordベースをまったく追加しないことをお勧めします。いつコードを変更する必要があるかわからなくなり、ベースオブジェクトではなくなります。そうは言っても、私たちは過去にこれを行っており、先頭にワードベースを付けました。流れが良いようです。

2
kemiller2002