유니티 팀 프로젝트를 하기 위한 컨벤션

여러분들은 팀 프로젝트에서 가장 중요하게 생각하시는게 무엇인가요?

저는 커뮤니케이션이라고 생각합니다. 

 

커뮤니케이션을 잘하기 위한 방법에는 무엇이 있을까요?

오프라인 회의, 잦은 소통 등이 있지만 저는 가장 효율적인 방법이 바로 컨벤션이라고 생각합니다.

 

팀에 컨벤션, 즉 규칙이 존재한다면 그거에 맞춰 커뮤니케이션 하기 편해지니깐요!

 

이번에는 개발자를 위한 코드 컨벤션 Part를 준비해봤습니다.

 


1-1. 코드 작성


1-1-0. 기본 세팅

에디터

  • 2022.3.20f1

1-1-1. 기본

 

C# identifier names - rules and conventions - C#

Learn the rules for valid identifier names in the C# programming language. In addition, learn the common naming conventions used by the .NET runtime team and the .NET docs team.

learn.microsoft.com

MS 컨벤션을 따릅니다. 가장 대중적이고 확실하니깐요 ㅎㅎ

  • 작명 기본
    • 기본적으로 lowerCamelCase를 따릅니다.
      int employeeCount = 0; 
      string employeeName = "John Doe"; 
      bool isEmployeeActive = true;​
  • 클래스(Class)와 구조체(Struct): 클래스와 구조체의 이름은 명사나 명사구를 사용하며, PascalCase를 사용합니다. 예를 들어, EmployeeRecordColorOption 등입니다.
    • 주로 명사로 작성하나, 반환 타입이 bool이라면, 질문 형태로 작성할 수 있습니다.
    public bool IsVisible()
    {
    	return true;
    }
    public bool ShouldDestroyProjectile()
    {
    	return false;
    }
  • 인터페이스(Interface): 인터페이스의 이름은 형용사구를 사용하거나 가끔 명사나 명사구를 사용합니다. 인터페이스 이름은 'I’로 시작하여 해당 타입이 인터페이스임을 나타냅니다. 예를 들어, IComponentICustomAttributeProviderIPersistable 등입니다.
    • 예시
    public interface IPersistable
    public interface ICloneable
    public interface IComparable
    public interface IDisposable
    public interface IComponent
    public interface ICustomAttributeProvider
    
  • 구조체(Struct): 구조체의 이름도 클래스와 마찬가지로 명사나 명사구를 사용하며, PascalCase를 사용합니다.
    • 예시
    public struct Point
    {
        public int X;
        public int Y;
    }
    
    public struct Rectangle
    {
        public int Width;
        public int Height;
    }
    
    public struct Circle
    {
        public int Radius;
    }
    
    public struct Triangle
    {
        public int Base;
        public int Height;
    }
    
    public struct Employee
    {
        public string Name;
        public int Age;
    }
    
  • 열거형(Enum): 열거형의 이름은 일반적으로 단수형을 사용합니다. 그러나 해당 열거형이 비트 필드를 나타내는 경우 복수형을 사용할 수 있습니다.
    • 예시
    public enum DaysOfWeek
    {
        Sunday,
        Monday,
        Tuesday,
        Wednesday,
        Thursday,
        Friday,
        Saturday
    }
    
    public enum MonthsOfYear
    {
        January,
        February,
        March,
        April,
        May,
        June,
        July,
        August,
        September,
        October,
        November,
        December
    }
    
    public enum Colors
    {
        Red,
        Orange,
        Yellow,
        Green,
        Blue,
        Indigo,
        Violet
    }
    
    public enum Sizes
    {
        Small,
        Medium,
        Large,
        ExtraLarge
    }
    
    public enum EmployeeStatus
    {
        Active,
        Inactive,
        OnLeave,
        Retired
    }
    
    

 

1-1-2. 주석


  • 주석은 ‘한글로' 작성 (영어여도 괜찮습니다)

1-1-3. 조건문과 반복문


  • 조건문
    • 한 줄을 제외한 모든 경우에 중괄호를 붙입니다.
    • 들여쓰기는 반드시 지킵니다.
  • 반복문
    • 단순 idx 접근을 제외하면, 변수명 i, j, k는 지양합니다.
    • 들여쓰기 필수입니다.
  • Switch
    • 들여쓰기 필수입니다.
    • defaults에도 내용 기입 (예외처리문 등)입니다.

1-1-4. 그 외


  • namespace
  • <Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>] 규칙을 따르셔야합니다.
    • 예시
      • TTATGCompany.TTATG. <특징>. <서브특징>