EveryDay.DevUp

[Unity] C# 코딩 규칙 본문

C#

[Unity] C# 코딩 규칙

EveryDay.DevUp 2020. 5. 1. 22:18

 

코딩 규칙은 혼자 개발할 때는 중요하지 않지만, 다른 사람들과 협업을 할 때 매우 중요한 요소.

- 일관성 있는 코드 규칙을 통해, 확인하는 사람으로써 빠른 이해가 가능할 수 있게 함

- 코드의 유지 보수가 용이 해짐

▶ Visual Studio를 사용하는 경우 도구 -> 설정 가져오기 및 내보내기 를 통해 자신의 설정을 내보내거나, 다른 사람의 설정을 가져올 수 있음

: 이를 통해 팀원 간의 환경을 맞출 수 있음

● 코드 표기법

▶ 카멜 표기법 : 첫 단어의 첫 글자는 소문자로, 이후 단어의 첫 글자는 대문자를 사용 ex ) testCamel

▶ 파스칼 표기법 : 모든 단어의 첫 글자는 대문자를 사용 ex) TestPascal\

▶ 헝가리안 표기법 : 변수 및 함수 앞에 데이터 타입을 표기 ex) iValue

▶ 스네이크 표기법 : 단어를 "_" 로 구분하는 방식 test_snake

▶ 케밥 표기법 : 단어를 "-" 로 구분하는 방식 test-kebab

● 일반적인 코드 표기법의 사용

- 아래 사이트와 개발 시에 읽기가 편했던 코드들의 경험을 바탕으로 사용 규칙을 다음과 같이 정리 

http://csharpdocs.com/c-coding-standards-and-best-practices/

 

C# Coding standards and Best Practices - CSHARPDOCS.COM

In this post i am describing the rule and recommendations for developing software application and class libraries in .NET using C# as a language. The main purpose is to define the general guidelines to enforce consistent coding styles and formatting that c

csharpdocs.com

▶ 파스칼 표기법 사용

: Class, Method, FileName

public class TestCode {}	// class에 파스칼 사용

public int GetCount() {}	// 함수에 파스칼 사용

TestCode.cs 			// 파일 이름에 파스칼 사용

▶ 카멜 표기법 사용

: 지역 변수 및 public, protected 변수에는 일반적인 카멜 표기법 사용, 멤버 변수는 "_"를 추가한 카멜 표기법 사용

public class TestCode {
    int _testId;	// 멤버 변수에는 _ 을 추가한 카멜 표기법
    
    public int testAccountId; // public, protected 변수에는 카멜 표기법
    
    public void GetAccountId() {
    	int tempId = testAccountId; // 지역 변수에는 카멜 표기법
        
        return tempId;
    }
}

▶ 인터페이스에는 I 를 추가 

public interface IObserver // 인터페이스 
{
    int Priority { get; set; }
    OBSERVER_STATE State { get; set; } 
    void OnNotify(object obj);
}

▶ bool 값을 가지는 변수 또는 프로퍼티는 Is를 사용 

bool _IsReward = false; 

public bool IsReward = false;

▶ 단순히 값을 가져오는 경우에는 Get을 셋팅하는 경우에는 Set을 사용

public int GetRewardGold()
{
    return rewardGold;
}

public void SetGold( int goldAmount )
{
    rewardGold = goldAmount;
}

▶ Class 안에 멤버 변수를 다른곳에서 참조하려고 할때는 직접적으로 가져다가 쓰기보다는 get; set;을 활용

public class Game 
{
    int _gold;
    
    public int Gold 
    {
    	get {
        	return _gold;
        }
        set {
        	return _gold
        }
    }
}

public class Main 
{
	void OnStart() {
    	Game game = new Game();
        game.Gold = 100;
    }
}

▶ ENUM은 항상 대문자만을 사용

public enum OBSERVER_STATE
{
    PROGRSS,
    REMOVE,
}

▶ 한 파일에는 하나의 클래스만 담길 수 있도록 해야함

▶ 하나의 클래스가 길어진다면 partial 을 사용하여 큰 기능별로 클래스를 분리

▶ 함수의 코드가 길어지는 것을 회피, 함수가 길어진다면 함수를 분리하는 것을 고려해야 함

▶ 함수와 변수의 이름은 줄임말을 사용하지 않고 명확한 단어를 사용

: 예외적으로 반복문의 경우에는 i, j, k를 사용해도 됨 ( 프로그래머 친화적인 규칙 )

▶ 함수 안에서 하나의 로직이 끝나면 개행으로 분리

public int Sum() {
    int a = 1;
    int b = 2;
    int result = 0;
    
    result = a + b;
    
    return result;
}

▶ if, switch 문과 같은 구문의 {}는 한행의 { 를 사용

if( a == b ) 
{
	Debug.Log( "test1" );
}
else 
{
	Debug.Log( "test2" );
}

▶ if, switch 문과 같은 구문의 {}는 한행의 { 를 사용

▶ if 문은 최대한 하나의 상태값만을 비교할 수 있도록 함으로써 조건을 명확히 함

▶ 계산식을 표시할 때는 논리적인 계산으로 ()가 없어도 될 때에도 최대한 ()를 넣어주는 것이 좋음

result = a + ( b / 2 );

▶ 주의가 필요한 함수 또는 이슈에 대한 처리 시 해당 부분에 주석을 달아주는것이 좋음

'C#' 카테고리의 다른 글

[Unity] Struct (구조체)  (0) 2021.12.23
[Unity] Namespace ( 네임 스페이스 )  (0) 2020.06.16
[Unity] C# 주석  (0) 2020.05.31
[Unity] C# Boxing , unboxing ( 박싱, 언박싱 )  (0) 2020.05.31
[Unity] C#에서의 메모리  (0) 2020.04.27