C#

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

Fastlane 2024. 1. 12. 17:03
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
반응형