C# 클래스 이름 지정 컨벤션 :베이스 클래스 또는 클래스베이스 또는 AbstractClass입니까?

StackOverflow https://stackoverflow.com/questions/826821

문제

기본 클래스 이름 지정에 대한 권장되는 접근법은 무엇입니까? 유형 이름을 "베이스" 또는 "추상적인"아니면"베이스 "로 접미사할까요?

다음을 고려하세요:

유형: 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가 더 나은 선택이 될 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top