본문 바로가기
C#

C#] 식별자/변수명 네이밍 규칙, convention

by Fastlane 2024. 1. 12.
728x90
반응형

identifier(식별자)란?

type(class, interface, struct, delegate, enum) type명, 변수명, member명, namespace명이다. 

 

네이밍 규칙

identifier는 반드시 아래 규칙을 따라야 한다. 아래 규칙을 따르지 않으면 C# compiler가 error를 발생한다. 

  • Identifier는 반드시 문자 또는 밑줄선(_)으로 시작한다. 

if라는 이름의 식별자를 선언하려면 @prefix를 붙여서 @if 로 선언하면 된다. 

 

네이밍 conventions

규칙에 더해, identifier conventions이 .NET API 전체에 사용된다. 이 conventions은 compiler가 강제하지 않더라도, name의 일관성을 제공한다. 다르게 사용해도 무방하다. 

 

convention은 아래와 같다. 

  • Interface name은 I로 시작한다. 
public interface IWorkerQueue
{
}
  • Attribute type은 Attribute라는 단어로 끝난다. 
  • Identifier는 2개의 연속 underscore(__)를 포함하지 않는다. 
  • 변수, 함수, 클래스 이름에는 의미있고 설명이 들어간 이름을 사용한다. 
  • PascalCase : type names, namespaces, 모든 public members, class names, method names, constant names
public class DataService
{
}

public record PhysicalAddress(
    string Street,
    string City,
    string StateOrProvince,
    string ZipCode);
    
public struct ValueCoordinate
{
}

public delegate void DelegateType(string message);

public class ExampleEvents
{
    // A public field, these should be used sparingly
    public bool IsValid;

    // An init-only property
    public IWorkerQueue WorkerQueue { get; init; }

    // An event
    public event Action EventProcessing;

    // Method
    public void StartEventProcessing()
    {
        // Local function
        static int CountQueueItems() => WorkerQueue.Count;
        // ...
    }
}
  • camelCase : method arguments, local variables, private fields
public class DataService
{
    private IWorkerQueue _workerQueue;
}

public class DataService
{
    private static IWorkerQueue s_workerQueue;

    [ThreadStatic]
    private static TimeSpan t_timeSpan;
}

public T SomeMethod<T>(int someNumber, bool isValid)
{
}
  • Private instance field는 underscore(_)로 시작한다. 
  • name에 유명한 것 제외 축약형이나 두문자를 사용하는 걸 피한다. 
  • 단순 반복 counters를 제외하고는 한글자 이름을 사용하지 않는다. 

 

728x90
반응형

댓글