(3-1) Unity3D/프로젝트: C# 코드 사양

10846 단어 프로젝트

1. 사양 목적:


(1.1) 코드 유지보수성을 강화한다.코드의 작성은 한꺼번에 완벽하게 쓸 수 있는 것이 아니라 끊임없이 버그를 복구하고 기능을 수정하거나 추가하며 전체 구조를 재구성해야 한다.이때 코드에 들어가서 수정을 해야 한다. 만약에 좋은 코드 규범이 없다면 시간이 지나면 스스로 읽기가 매우 어렵다.(1.2) 팀 개발 효율을 향상시킨다.대부분의 프로젝트의 코드는 한 사람이 작성한 것이 아니다. 다른 구성원들은 프로젝트의 인수인계가 당신이 작성한 코드를 관리해야 하기 때문에 좋은 코드 규범이 없으면 다른 사람들이 당신의 코드를 빠르게 쉽게 이해할 수 없을 것이다.(1.3) 개인 인코딩 효율을 높인다.처음에는 규범에 얽매인다고 생각했지만 나중에는 오히려 규범에 얽매여 의존감을 느낄 수 있어 더 이상 어떤 이름을 지어야 할지 망설일 필요가 없다.

2. 사양명세:


(2.1) 코드의 규범은 절대적인 것이 아니다. 모든 회사는 자신의 코드 규범을 가지고 모든 신인들이 들어오면 코드 규범을 가장 먼저 배워야 팀의 개발에 가입할 수 있다.

3. 명명 규칙:


(3.1) 기본 규칙(클래스, 필드, 방법, 매개 변수에 대해): [규칙 1-1] 영문 단어의 명칭.병음이나 무의미한 자모의 이름을 사용하는 것을 금지합니다.[규칙1-2] 직관적이고 알기 쉽다.그 기능이나 의미를 묘사할 수 있는 영문 단어나 어구를 사용한다.【규칙 1-3】 상수의 명명을 제외하고는 밑줄 명명법을 사용하지 마라.
//             :
int carType //  :    、      。
int qicheleixing //  :  。
int akhj //  :   。
int car //  :       。
int car_type //  :     。

[규칙 1-4] 통속적인 변수를 약정하면 순서대로 간단하게 명명할 수 있다.
//        ( )  :
int i,j,k;

【규칙1-5】 명명 공간명, 유형명, 인터페이스명, 비사유 필드명, 매거명과 매거값명, 방법명은 낙타봉식명명명법, 즉 모든 단어의 자모가 대문자로 되어 있다.
namespace Car {} //     
public class SendManager; //  
public interface IState; //   
public string FirstName; //      
enum CarDriveType {FrontWheelDrive, RearWheelDrive, FourWheelDrive}//        
public void SendMessage(string message) {} //   

【규칙1-6】 사유 필드 이름, 방법 매개 변수 이름, 국부 변수 이름은 작은 낙타 봉식 명명법, 즉 첫 번째 단어의 알파벳은 소문자, 나머지 단어의 알파벳은 대문자로 한다.
private string mFirstName; //     
public void FindByFirstName(string firstName) {} //     
string firstName; //     

(3.2) 특수 규칙: [규칙 2-1] 인터페이스의 이름은'I'로 시작해야 한다.
public interface IState;

[규칙 2-2] 유형의 사유 변수 이름은'm'로 시작한다.
private string mFirstName;

[규칙 2-3] 상수의 명명 단어 사이에 ""분리, 모든 자모는 대문자로 쓴다.
private const float MAX_SPEED = 180.0f;

【규칙2-4】 방법이 구성원 변수의 값을 되돌려준다면 방법명은 일반적으로Get+구성원 변수 이름이다.
public string GetFirstName() 
{
}

【규칙2-5】 만약에 방법이 하나의 구성원 변수의 값을 수정한다면 방법명은 보통set+구성원 변수명이다.
public void SetFirstName(string firstName) 
{
}

【규칙2-6】 방법이 되돌아오는 값이 bool 변수라면 방법명은 일반적으로 의미에 따라 Is/Can/Has/Try를 접두사로 한다.
public bool IsEmpty() 
{
}

public bool CanEmpty() 
{
}

[규칙2-7] 방법 내의 국부 변수가 클래스의 필드 이름과 같지 않도록 한다.

4. 인코딩 사양:


[규칙 3-1] 변수를 성명할 때 한 줄에 하나의 변수만 성명한다.
private string mFirstName;
private string mLastName;

[규칙3-2] 변수를 성명할 때 순서대로 간단한 변수는 한 줄에 여러 개를 성명할 수 있다.
int i,j,k;

【규칙3-3】 국부 변수 성명 시 근접 원칙을 채택하고 이 변수를 곧 사용할 때 성명한다.【규칙3-4】 "{"과 "}"의 위치는 아래와 같이 한 줄을 독점한다.
public void Example() 
{
    int i = 5;
    int j = 6;
    i += j;
    int k = 3;
    k = k * 2;
}

[규칙 3-5] 두 방법 사이에 공행을 사용한다.
public void ExampleA() 
{
}

public void ExampleB() 
{
}

[규칙3-6] 클래스의 필드 성명은 클래스의 맨 앞에 통일적으로 놓여 있고 마지막 성명과 클래스의 첫 번째 방법 사이에 빈 줄을 사용한다.
public class Student 
{
    private string mFirstName;
    private string mLastName;

    public string GetFirstName() 
    {
    }
}

[규칙 3-7] 메소드 매개변수 목록의 ","뒤에 공백을 사용합니다.
public void SetName(string firstName, string lastName) 
{
}

[규칙 3-8] 이원 조작부호, "."를 제외하고는양쪽에 공백을 하나씩 사용합니다.
a = c + d;

[규칙 3-9] for문장 표현식 중 ";"뒤에 공백을 사용합니다.
for(i = 0; i <= 3; i++) 
{ }

[규칙 3-10] 강제 변환 뒤에 공백을 사용합니다.
char c;
int a = 4;
c = (char) a;

【규칙3-11】if,for,while 문장의 내용이 한 줄만 있으면 "\"를 붙이지 않아도 되지만if,for,while 문장과 같은 줄에 있어야 한다.
if(i < 5) i = 5;

[규칙 3-12] 한 줄의 코드 길이는 화면 너비를 초과하지 마세요.초과하면 부분을 초과하여 줄을 바꿉니다.특수한 상황에서 대량의 내용을 정의한 상량수조(예를 들어 모든 민감어)나 상하의 정연한 공식을 강요하지 않는다.

5. 주석 사양:


[규칙 4-1] 코드 헤더 주석은 다음과 같은 내용을 포함한다. 파일 이름: 파일 이름.기능 설명: 파일의 기능 설명과 대략적인 절차 설명.저자: 작성하고 작성한 사람입니다.날짜: 작성하고 작성한 날짜입니다.수정 기록: 클래스가 수정되면 수정자의 이름, 수정 날짜와 수정 이유가 있어야 한다.
//     :UserInput.cs
//     :         
//     :  
//     :2017.7.16
//     :
// R1:
//     :  
//     :2017.7.17
//     :            

Using System;

【규칙4-2】 방법의 주석은///형식으로 자동으로 XML 라벨 형식의 주석을 생성한다.방법 기능, 매개 변수의 의미, 반환 내용을 포함한다.
    /// 
    ///        .
    /// 
    /// true,         , false         .
    ///     .
    public bool SetSceneName(string sceneName) 
    {
    }

规则4-3】类变量注释,采用 /// 形式自动产生XML标签格式的注释变量含义。

    /// 
    ///      
    /// 
    private string mSceneName;

规则4-4】局部变量注释,在变量声明语句的后面注释,与前后行变量声明的注释左对齐,注释与代码间以Tab隔开。

string firstName;   // 
string lastName;    // 

【규칙4-5】 코드 줄의 주석은 코드 상단에 위치하고 코드의 시작 부분과 왼쪽으로 정렬되며 쌍사선과 주석 사이는 빈칸으로 분리된다.
//       。
this.mSceneName = sceneName;

좋은 웹페이지 즐겨찾기