1. 程式人生 > >(3-1)Unity3D/專案:C#程式碼規範

(3-1)Unity3D/專案:C#程式碼規範

1.規範目的:

(1.1)增強程式碼可維護性。程式碼的編寫不是一次性就能寫得很完美的,需要不斷的修復bug,修改或增加功能,重新設計整體架構等。這時就需要進入程式碼中去做修改,如果沒有良好的程式碼規範,時間久了自己閱讀起來就很費力。
(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標籤格式的註釋。包括方法功能,引數含義,返回內容。

    /// <summary>
    /// 設定場景的名字.
    /// </summary>
    /// <returns><c>true</c>, 場景名字設定成功, <c>false</c> 場景名字設定失敗.</returns>
    /// <param name="sceneName">場景名字.</param>
    public bool SetSceneName(string sceneName) 
    {
    }

規則4-3】類變數註釋,採用 /// 形式自動產生XML標籤格式的註釋變數含義。

    /// <summary>
    /// 場景的名字
    /// </summary>
    private string mSceneName;

規則4-4】區域性變數註釋,在變數宣告語句的後面註釋,與前後行變數宣告的註釋左對齊,註釋與程式碼間以Tab隔開。

string firstName;   //姓
string lastName;    //名

規則4-5】程式碼行註釋,註釋位於程式碼上行,與程式碼開始處左對齊,雙斜線與註釋之間以空格分開。

//設定場景的名字。
this.mSceneName = sceneName;

相關推薦

3-1Unity3D/專案C#程式碼規範

1.規範目的: (1.1)增強程式碼可維護性。程式碼的編寫不是一次性就能寫得很完美的,需要不斷的修復bug,修改或增加功能,重新設計整體架構等。這時就需要進入程式碼中去做修改,如果沒有良好的程式碼規範,時間久了自己閱讀起來就很費力。 (1.2)提高團隊開發效

3-2Unity3D/專案Unity工程目錄規範

【規則1-1】Assets目錄中的所有資原始檔名(場景、指令碼、預設、模型、網格、紋理、材質、精靈、著色器、音訊剪輯、視訊剪輯)均採用 大駝峰式命名法 ,即每一個單詞的首字母都大寫。且使用能夠描述其功能或意義的英文單詞或片語。 【規則1-2】資原始檔屬於同一型

4-1Unity3D/工具6步學會在Unity中讀取Excel配置檔案

第一步:下載Unity3D讀取Excel工具【ExcelResolutionForUnity】並解壓,下載地址:點選下載 下載解壓後文件目錄如下: 第二步:把這3個檔案匯入到你的Unity專案目

3-3Unity3D/專案遊戲常用英文命名

1.角色屬性類: 角色 Character 力量 Strength 耐力 Stamina/Patience 智力 Intellect 免疫力 Immune/Immunity 生命力 Hit Point(HP) 魔法力 Magic Point(MP)

3.1一個按鍵所能涉及的按鍵中斷

/* AUTHOR: Pinus * Creat on : 2018-10-11 * KERNEL : linux-4.4.145 * BOARD : JZ2440(arm9 s3c2440) * REFS : 韋東山視訊教程第二期 */ 概述         

C語言入門學習3-1——順序結構程式設計

課程要求:1.掌握程式設計的基本思想2.熟悉及掌握C語言基本資料型別(int,long,float,double)的說明3.掌握格式輸入函式scanf的靈活應用4.  掌握格式輸出函式printf的靈活應用5.  算術表示式在實際問題中應用6.  必須掌握的演算法1.兩數的交

磨染的初心——計算機視覺的現狀3.1影象分割

##磨染的初心——計算機視覺的現狀(3.1):影象分割 **為了通過材質、形狀、結構識別目標,對影象進行分割應該是必然的選擇**。在這一點上計算機視覺研究者們算是勉強達成了共識,影象分割甚至被很多研究者列為計算機視覺的基本任務之一了。很多影象分割演算法被提了出來,歸納起來可以分為基於閾值的方法、基於聚類的方

OAuth2.0學習3-1服務端實現

other cti info ase service packages artifacts ace ews 開源 http://oltu.apache.org/ 其他 http://www.oschina.net/project/tag/307/oauth?lang=19&

eclipse知識積累3-1查找關鍵字

earch images ips 菜單 com 搜索 cte 知識 ges 1、選擇資源目錄->選擇search-file菜單 2、在彈出的對話框中, 輸入要【搜索的字符串】,選擇【selected resources】,點擊【search】按鈕 3、 e

深入理解計算機系統3.1------匯編語言和機器語言

找到 生產 有著 shu 符號 ces pc機 高效率 機器語言   《深入理解計算機系統》第三章——程序的機器級表示。作者首先講解了匯編代碼和機器代碼的關系,闡述了匯編承上啟下的作用;接著從機器語言IA32著手,分別講述了如何存儲數據、如何訪問數據

GITHUB3.1前期準備

功能 class 用戶信息 spa 方法 font url ext text 創建GitHub賬戶 打開創建賬戶頁面:https://github.com/join Username 您創建的ID,用英文和數字寫。您的公開頁面的 URL(http://github.com

WiFi-ESP8266入門http3-1網頁認證上網-post請求原教程

nts 時空 logo 全能 targe work sig html urn 教程:http://geek-workshop.com/thread-37484-1-1.html 源碼:鏈接:https://pan.baidu.com/s/1yuYYqsM-WSOb0Aby

PTA練習穩贏C語言實現

大家應該都會玩“錘子剪刀布”的遊戲:兩人同時給出手勢,勝負規則如圖所示: 輸入格式: 輸入首先在第一行給出正整數K(≤10),即平局間隔的次數。隨後每行給出對方的一次出招:ChuiZi代表“錘子”、JianDao代表“剪刀”、Bu代表“布”。End代表輸入結束,這一行不要作為出

演算法-藍橋杯習題3-1

藍橋杯習題藍橋杯練習系統習題加答案,總共分為6部分,90%習題使用C語言解答,部分使用C++或者Java。大部分習題為搜尋參考或者別人提供所得,不足之處在所難免,懇請批評指正(預計200多題,習題僅供學習交流)目錄藍橋杯練習系統評測資料演算法訓練(PartA-20題)/* 演

學習Linux-4.12核心網路協議棧3.1——網路層的收包處理

現在我們將進入傳輸層的分析: 在前面我們知道,資料包到達介面層的時候,它會根據ptype_base來查詢包的型別,並根據包的型別交給不同的網路層函式處理,比如ip_recv,icmp_recv等,現在我們就來看看網路層是怎麼處理不同型別的包的: 1. IP私有資訊控制塊

【一步一個腳印】Tomcat+MySQL為自己的APP打造伺服器3-1Android 和 Service 的互動之GET方式

      好久沒更新了,罪過罪過。最對不起的人莫過於那些支援和等待在下拙文的諸位,在此道一聲抱歉。管窺之見,僥倖博得各位認同,給了我莫大的鼓勵。       話休絮煩,文接前章。       到【一步一個腳印】Tomcat+MySQL為自己的APP打造伺服器(2-3)Se

【Linux Device Driver】—3.1—ioctl——程式碼

《Linux Device Driver》這本書的卻做的很好,對於一個初學者來說雖然有點難度,但是隻要認真看,絕對是大有裨益的! 好了,昨天把ioctl的原理以及涉及到的程式碼貼了一下,今天就做了做實驗,感覺還湊合,所以就貼出來!對自己也算是做個筆記吧! 今天這個實驗主

Jmeter指令碼錄製-使用Jmeter代理進行錄製3-1

1、第一步,先新增一個執行緒組 2、第二步,在工作臺新增http代理伺服器 3、第三步,設定所訪問瀏覽器的代理伺服器(設定好之後可以錄製http請求介面) 4、由於未安裝Jmeter證書,所以訪問https請求會提示不安全 5、安裝J

深入理解計算機系統3.1------組合語言和機器語言

  《深入理解計算機系統》第三章——程式的機器級表示。作者首先講解了彙編程式碼和機器程式碼的關係,闡述了彙編承上啟下的作用;接著從機器語言IA32著手,分別講述瞭如何儲存資料、如何訪問資料、如何完成運算以及如何進行跳轉。通過這些步驟,又告訴了我們分支語句、迴圈語句是怎麼完成的,函式呼叫、棧幀結構以及遞迴過程。

【Linux Device Driver】—3.1—ioctl——原理

大部分驅動除了需要具備讀寫裝置能力外,還需要具備對硬體控制的能力,例如:要求裝置報告錯誤資訊改變模特率,這些操作常常通過ioctl方法來實現! 這裡的東西看上去的卻挺多,但是還是依照此次的原則,只是對自己知識的一個複習,所以也就懶得貼那麼多的文字。 1、ioctl方法