C# 클래스 이름 지정 컨벤션 :베이스 클래스 또는 클래스베이스 또는 AbstractClass입니까?
-
05-07-2019 - |
문제
기본 클래스 이름 지정에 대한 권장되는 접근법은 무엇입니까? 유형 이름을 "베이스" 또는 "추상적인"아니면"베이스 "로 접미사할까요?
다음을 고려하세요:
유형: ViewModel
예를 들어 MainViewModel, reportViewModel
기본 클래스 : BaseViewModel
또는 ViewModelBase
또는 AbstractViewModel
또한 고려 :
유형: Product
예를 들어 가상 제품, 만료 제품
기본 클래스 : BaseProduct
또는 ProductBase
또는 AbstractProduct
어떤 것이 더 표준이라고 생각하십니까?
class Entity : EntityBase
{
}
또는
class Entity : BaseEntity
{
}
해결책
기본 접미사와 함께 프레임 워크에 예가 있습니다. System.Configuration.Provider.ProviderBase
, System.Web.SessionState.SessionStateStoreProviderBase
.
그러나 프레임 워크의 모든 추상적 인 기본 클래스는이 컨벤션을 따르지 않습니다 (예 : System.Data.Common.DbParameter
, System.Data.Common.DbCommand
).
개인적으로 나는 접미사를 사용하지 않을 것입니다 ~하지 않는 한 나는 그것이 추상적 인 클래스라는 사실을 강조하고 싶었고, 그렇지 않으면 클래스 사용자가 그 이름이 구체적인 구현을 나타낼 것으로 기대할 수 있다고 생각했습니다.
다른 팁
위의 어느 것도. 기본 클래스가 제공하는 목적을 고려하십시오. 이름을 지정하십시오. 예를 들어, 자동차 및 자전거의 기본 등급은 차량 일 수 있습니다.
기본 클래스를 한 번의 클래스를 갖기 위해 기본 클래스를 만들고 그 외에는 목적이나 이유가 없다면 아마도 뭔가 잘못하고있을 것입니다.
가상 기본 클래스에 대해 이야기하고 있다면 Microsoft의 표준은 Classnamebase (예 : CollectionBase)입니다.
나는 그것이 선택의 문제라고 생각합니다. 당신이 많은 기본 클래스를 만들고 있다면 아마도베이스 클래스 이름을 사용하는 것이 항상 더 낫다고 말하고 싶습니다. 왜냐하면 그 방법으로 항상 기지를 입력하고 나머지 도움을받는 데 사용할 수있는 기본 클래스를 항상 찾을 수 있기 때문입니다. 지적. 20 개의 기본 클래스가 있고 접미사로베이스를 추가하고 기본 클래스의 이름이 무엇인지 잊어 버렸다면 어떻게해야합니까? VS에서 먼저 클래스 다이어그램을 만들고 어떤 기본 클래스를 사용할 수 있는지 알아 보시십니까? 클래스베이스가 한두 번의 클래스 일 때 클래스베이스를 지명하는 것은 괜찮습니다.
getItems와 itemsget 기능 사이의 결정도 마찬가지입니다. 나는 가독성을 좋아한다. 컨벤션을 따르십시오 :)
우리는 baseentity를 사용하지만, 나는 당신의 선호도를 생각합니다. 나는 자주 다른 것을 본다.
당신의 상황에서 일관되게, 프로젝트, 네임 스페이스 또는 가능한 경우 팀이 될 것입니다. 다른 규칙은 나쁜 컨벤션 IMHO보다 나쁩니다.
개인적으로, 나는 단어 기반을 전혀 추가하는 것을 권장합니다. 언제 코드를 변경 해야하는지 알 수 없으며 더 이상 기본 객체가되지 않습니다. 즉, 우리는 과거에 이것을 해왔으며, 우리는 앞면의 단어 기반을 접두사했습니다. 더 잘 흐르는 것 같습니다.
Baseentity는 Camel Case -Strname, Bseentity와 비슷합니다. EntityBase가 먼저 주제를 정의하기 때문에 EntityBase를 사용하므로 기능을 더 빨리 식별하는 데 도움이됩니다.
이름을 지정할 때 항상 알파벳 화에 대해 생각하십시오. 나는 SQL Server를 보는 것을 좋아하지 않으며 모든 저장된 절차는 USP [Something]입니다. 같은 줄을 따라 기능의 주요 이름으로 과식하고 설정하지 마십시오. getItems 또는 placeorder 대신 항목 또는 주문 장소로 명명하는 것에 대해 생각하십시오.
따라서 일반적으로 ClassNameBase / EntityBase가 더 나은 선택이 될 것입니다.