C#クラスの命名規則:基本クラスですか、それともクラスベースですか、抽象クラスですか
-
05-07-2019 - |
質問
基本クラスの命名に推奨されるアプローチは何ですか?タイプ名の前に" Base "が付いていますか?または" 抽象"それとも単に「ベース」と接尾辞を付けますか?
次のことを考慮してください:
type: ViewModel
例: MainViewModel 、 ReportViewModel
基本クラス: BaseViewModel
または ViewModelBase
または AbstractViewModel
また考慮してください:
type: Product
例: VirtualProduct 、 ExpiringProduct
基本クラス: BaseProduct
または ProductBase
または AbstractProduct
どちらがより標準だと思いますか?
class Entity : EntityBase
{
}
または
class Entity : BaseEntity
{
}
解決
フレームワークには、Baseサフィックスが付いた例があります。 System.Configuration.Provider.ProviderBase
、 System.Web.SessionState.SessionStateStoreProviderBase
。
ただし、フレームワークのすべての抽象基本クラスがこの規則に従うわけではありません(たとえば、 System.Data.Common.DbParameter
、 System.Data.Common.DbCommand
)。
個人的には、接尾辞を使用することを避けます unless それが抽象クラスであるという事実を強調したいと思います。 >
他のヒント
上記のいずれでもない。基本クラスが提供する目的を検討してください。それに名前を付けます。たとえば、Automobile and Bicycleの基本クラスはVehicleです。
1つのクラスの基本クラスを持つためだけに基本クラスを作成し、それ以外の目的や理由がない場合、おそらく何か間違ったことをしていることになります。
仮想ベースクラスについて話している場合、Microsoftの標準はClassnameBase(CollectionBaseなど)です
それは選択の問題だと思います。多くの基本クラスを作成している場合は、常にBaseClassnameを使用することをお勧めしますインテリセンス。 20個のベースクラスがあり、ベースをサフィックスとして追加し、ベースクラスの名前を忘れた場合はどうなりますか?最初にVSからクラス図を作成し、使用可能な基本クラスを見つけますか? クラスが1つまたは2つのクラスである場合は、ClassBaseと名付けても大丈夫です。
GetItems関数とItemsGet関数の決定についても同様です。少なくとも読みやすさのために-GetItemsに行きましょう。規則に従ってください:)
BaseEntityを使用していますが、自分の好みだと思います。よく見かけます。
プロジェクト、名前空間、可能であればチームなど、コンテキスト内で一貫性を保ってください。異なる慣習は、悪い慣習よりも悪いです。私見。
個人的には、語基をまったく追加しないことをお勧めします。いつコードを変更する必要があるかわからないので、それがベースオブジェクトではなくなります。そうは言っても、これは過去に行ったことがあり、先頭にBaseという単語を付けました。流れが良いようです。
BaseEntityは、ラクダケースによく似ています-strName、bseEntity。最初にサブジェクトを定義するため、EntityBaseに行きます。これにより、機能をより迅速に識別できます。
名前を付けるときは、常にアルファベット順に考えてください。私はSQLサーバーを見るのが本当に好きではなく、すべてのストアドプロシージャの名前はusp [something]です。同じ行に沿って、関数の主要な名前としてGetとSetを使いすぎないでください。 GetItemsまたはPlaceOrderの代わりに、ItemsGetまたはOrderPlaceと命名することを検討してください。
したがって、一般に、ClassnameBase / EntityBaseの方が適しています。