팀 단위로 개발을 진행하다보면, 각 클래스, 변수, 함수 등은 어떻게 이름을 지어야 유지보수에 좋고 가독성이 좋은지 고민하게된다.
변수명을 아무렇게 지으면.. 나중에 수정할때 고통받는다.
1. Naming Convention
각 이름을 짓는 방법이 있다. 종류와 예시는 다음과 같다.
- Camel Case
각 단어는 붙여쓰고, 첫 단어를 제외한 나머지 단어의 첫글자는 대문자로
ex) camelCase, playerController ...
- Pascal Case
각 단어의 첫 글자는 대문자로, 나머지는 소문자로
ex) PlayerController, GameController ...
- Snake Case
단어는 소문자만 써서, 각 단어는 언더바 '_' 로 구분지어 표현
ex) snake_case, player_controller, (대문자로만 쓰는 표현은 Screaming Snake case)GAME_CONTROLLER
- Kebab Case
각 단어사이를 하이푼 '-'으로 구분하여 표현
ex) Kebab-Case, player-controller
2. c# 공식 convention
마이크로소프트 .NET의 c#문서를 보면 다음과같이 convention이 존재하는것을 확인할 수 있다.
대표적인 내용을 정리해볼 시 다음과 같다.
- 인터페이스 이름은 대문자I로시작
- 열거형은 단수명사사용, 플래그인경우 복수명사사용
- 변수, 메서드 및 클래스에 의미있고 설명이 포함된 이름 사용
- 클래스 이름, 매서드이름에 PascalCase사용
- 필드와 로컬상수 모두의 상수 이름에 PascalCase사용
- 메서드, 매개변수, 지역변수에 camelCase사용
- private instance필드는 언더바 '_'로 시작하고 나머지 텍스트는 camelCased
- 정적필드는 s_로 시
public class DataService
{
// A public field, these should be used sparingly
public bool IsValid;
// Delegate
public delegate void DelegateType(string message);
// Method
public void StartEventProcessing()
{
// Local function
static int CountQueueItems() => WorkerQueue.Count;
// ...
}
}
//interface Starts with I
public interface IWorkerQueue
{
}
public class DataService
{
//camelCasing
private IWorkerQueue _workerQueue;
//camelCasing for parameter
public T SomeMethod<T>(int someNumber, bool isValid)
{
}
}
- Gneric의 경우
- 단일 문자 이름이 완전히 설명적이라서 설명이 포함된 이름이 가치가 없다면, 제네릭 형식 매개 변수의 이름을 설명적인 이름으로 지정
- 형식에 단일 문자 형식 매개 변수가 있을 경우, 형식 매개 변수 이름으로 사용을 T 고려
- "T"로 설명 유형 매개 변수 이름을 접두사로 붙임 등이 있다.
public interface ISessionChannel<TSession> { /*...*/ }
public delegate TOutput Converter<TInput, TOutput>(TInput from);
public class List<T> { /*...*/ }
public int IComparer<T>() => 0;
public delegate bool Predicate<T>(T item);
public struct Nullable<T> where T : struct { /*...*/ }
public interface ISessionChannel<TSession>
{
TSession Session { get; }
}
3. 추후활용방안
- 프로젝트 진행시 전체 convention과 함께 naming convention도 정의하여, 협업 시 혼선이없도록 방지가능
- 코드 규칙고 같이 참고하면, 코드 가독성 향상가능, 유지보수에 도움이 된다.
참고자료 : https://learn.microsoft.com/ko-kr/dotnet/csharp/fundamentals/coding-style/identifier-names
식별자 이름 - 규칙 및 관례 - C#
C# 프로그래밍 언어의 유효한 식별자 이름에 대한 규칙을 알아봅니다. 또한 .NET 런타임 팀과 .NET 문서 팀에서 사용하는 일반적인 명명 규칙을 알아봅니다.
learn.microsoft.com