1. 程式人生 > >C#程式設計規範 2

C#程式設計規範 2

C#書寫規範<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

一、命名

對於理解應用程式的邏輯流,命名方案是最有影響力的一種幫助。名稱應該說明什麼而不是如何。通過避免使用公開基礎實現(它們會發生改變)的名稱,可以保留簡化複雜性的抽象層。例如,可以使用 GetNextStudent(),而不是 GetNextArrayElement()

命名原則是:

選擇正確名稱時的困難可能表明需要進一步分析或定義項的目的。使名稱足夠長以便有一定的意義,並且足夠短以避免冗長。唯一名稱在程式設計上僅用於將各項區分開。表現力強的名稱是為了幫助人們閱讀;因此,提供人們可以理解的名稱是有意義的。不過,請確保選擇的名稱符合適用語言的規則和標準。

以下幾點是推薦的命名方法。

1、方法、屬性、變數規範

  • 避免容易被主觀解釋的難懂的名稱,如方面名AnalyzeThis(),或者屬性名xxK8。這樣的名稱會導致多義性。
  • 在面向物件的語言中,在類屬性的名稱中包含類名是多餘的,如Book.BookTitle。而是應該使用Book.Title
  • 使用動詞-名詞的方法來命名對給定物件執行特定操作的例程,如CalculateInvoiceTotal()
  • 在允許函式過載的語言中,所有過載都應該執行相似的函式。
  • 只要合適,在變數名的末尾或開頭加計算限定符(AvgSumMinMaxIndex)。
  • 在變數名中使用互補對,如 min/maxbegin/end
    open/close
  • 鑑於大多數名稱都是通過連線若干單詞構造的,請使用大小寫混合的格式以簡化它們的閱讀。另外,為了幫助區分變數和例程,請對例程名稱使用 Pascal 大小寫處理 (CalculateInvoiceTotal),其中每個單詞的第一個字母都是大寫的。對於變數名,請使用 camel 大小寫處理 (documentFormatType),其中除了第一個單詞外每個單詞的第一個字母都是大寫的。
  • 布林變數名應該包含Is,這意味著 Yes/No True/False 值,如fileIsFound
  • 在命名狀態變數時,避免使用諸如Flag的術語。狀態變數不同於布林變數的地方是它可以具有兩個以上的可能值。不是使用
    documentFlag,而是使用更具描述性的名稱,如documentFormatType(此項只供參考)
  • 即使對於可能僅出現在幾個程式碼行中的生存期很短的變數,仍然使用有意義的名稱。僅對於短迴圈索引使用單字母變數名,如ij
  • 可能的情況下,儘量不要使用原義數字或原義字串,如For i = 1 To 7。而是使用命名常數,如For i = 1 To NUM_DAYS_IN_WEEK以便於維護和理解。

二、程式碼書寫規範

格式化使程式碼的邏輯結構很明顯。花時間確保原始碼以一致的邏輯方式進行格式化,這對於您和你的開發小組,以及以後維護原始碼的其他開發人員都有很大的幫助。

以下幾點是推薦的格式化方法。

  • 建立標準的縮排大小(如四個空格),並一致地使用此標準。用規定的縮排對齊程式碼節。
  • 在釋出原始碼的硬拷貝版本時使用特定的字型以及字號(新宋體、小五號)。
  • 在括號對對齊的位置垂直對齊左括號和右括號,如:

也可以使用傾斜樣式,即左括號出現在行尾,右括號出現在行首,如:

無論選擇哪種樣式,請在整個原始碼中使用那個樣式。

  • 沿邏輯結構行縮排程式碼。沒有縮排,程式碼將變得難以理解,如:

if(expression )

{

//

//此處填寫你的程式碼塊;

//

}

if(expression )

{

//

//此處填寫你的程式碼塊;

//

}

else

{

//

//此處填寫你的程式碼塊;

//

}

縮排程式碼會產生出更容易閱讀的程式碼,如:

if(expression )

{

if(expression )

{

//

//此處填寫你的程式碼塊;

//

}

else

{

//

//此處填寫你的程式碼塊;

//

}

}

  • 為註釋和程式碼建立最大的行長度,以避免不得不滾動原始碼編輯器,並且可以提供整齊的硬拷貝表示形式。
  • 在大多數運算子之前和之後使用空格,這樣做時不會改變程式碼的意圖。但是,C++ 中使用的指標表示法是一個例外。
  • 使用空白為原始碼提供結構線索。這樣做會建立程式碼,有助於讀者理解軟體的邏輯分段。
  • 當一行內容太長而必須換行時,在後面換行程式碼中要使用縮排格式,如下:

string inserString = "Insert Into TableName(username,password,email,sex,address)"

+ "Values('Soholife','chenyp','[email protected]','male','深圳福田')";

  • 只要合適,每一行上放置的語句避免超過一條。例外是 CC++C# JScript 中的迴圈,如for (i = 0; i < 100; i++)
  • 編寫 HTML 時,建立標準的標記和屬性格式,如所有標記都大寫或所有屬性都小寫。另一種方法是,堅持 XHTML 規範以確保所有 HTML 文件都有效。儘管在建立 Web 頁時需折中考慮檔案大小,但應使用帶引號的屬性值和結束標記以方便維護。
  • 編寫 SQL 語句時,對於關鍵字使用全部大寫,對於資料庫元素(如表、列和檢視)使用大小寫混合。
  • 在物理檔案之間在邏輯上劃分原始碼。
  • 將每個主要的 SQL 子句放在不同的行上,這樣更容易閱讀和編輯語句,例如:
  • 將大的複雜程式碼段分為較小的、易於理解的模組。

三、註釋

軟體文件以兩種形式存在:外部的和內部的。外部文件(如規範、幫助檔案和設計文件)在原始碼的外部維護。內部文件由開發人員在開發時在原始碼中編寫的註釋組成。

不考慮外部文件的可用性,由於硬拷貝文件可能會放錯地方,原始碼清單應該能夠獨立存在。外部文件應該由規範、設計文件、更改請求、錯誤歷史記錄和使用的編碼標準組成。

內部軟體文件的一個難題是確保註釋的維護與更新與原始碼同時進行。儘管正確註釋原始碼在執行時沒有任何用途,但這對於必須維護特別複雜或麻煩的軟體片段的開發人員來說卻是無價的。

以下幾點是推薦的註釋方法:

  • 如果用 C# 進行開發,請使用 XML 文件格式,如下面方法的註釋:

///<summary>

///得到某人的年齡

///</summary>

///<param name="userName">使用者名稱</param>

///<returns>使用者年齡</returns>

public int GetUserAge(string userName)

{

//

//此處寫你的程式程式碼

//

}

  • 修改程式碼時,總是使程式碼周圍的註釋保持最新。
  • 在每個例程的開始,提供標準的註釋樣本以指示例程的用途、假設和限制很有幫助。註釋樣本應該是解釋它為什麼存在和可以做什麼的簡短介紹。
  • 避免在程式碼行的末尾添加註釋;行尾註釋使程式碼更難閱讀。不過在批註變數宣告時,行尾註釋是合適的;在這種情況下,將所有行尾註釋在公共製表位處對齊。
  • 避免雜亂的註釋,如一整行星號。而是應該使用空白將註釋同程式碼分開。
  • 避免在塊註釋的周圍加上印刷框。這樣看起來可能很漂亮,但是難於維護。
  • 在部署之前,移除所有臨時或無關的註釋,以避免在日後的維護工作中產生混亂。
  • 如果需要用註釋來解釋複雜的程式碼節,請檢查此程式碼以確定是否應該重寫它。盡一切可能不註釋難以理解的程式碼,而應該重寫它。儘管一般不應該為了使程式碼更簡單以便於人們使用而犧牲效能,但必須保持效能和可維護性之間的平衡。
  • 在編寫註釋時使用完整的句子。註釋應該闡明程式碼,而不應該增加多義性。
  • 在編寫程式碼時就註釋,因為以後很可能沒有時間這樣做。另外,如果有機會複查已編寫的程式碼,在今天看來很明顯的東西六週以後或許就不明顯了。
  • 避免多餘的或不適當的註釋,如幽默的不主要的備註。
  • 使用註釋來解釋程式碼的意圖。它們不應作為程式碼的聯機翻譯。
  • 註釋程式碼中不十分明顯的任何內容。
  • 為了防止問題反覆出現,對錯誤修復和解決方法程式碼總是使用註釋,尤其是在團隊環境中。
  • 對由迴圈和邏輯分支組成的程式碼使用註釋。這些是幫助原始碼讀者的主要方面。
  • 在整個應用程式中,使用具有一致的標點和結構的統一樣式來構造註釋。
  • 用空白將註釋同註釋分隔符分開。在沒有顏色提示的情況下檢視註釋時,這樣做會使註釋很明顯且容易被找到。

相關推薦

C#程式設計規範 2

C#書寫規範<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 一、命名 對於理解應用程式的邏輯流,命名方案是最有影響力的一種幫助。名稱應該說明“什麼”而不是“

(轉)11條最全面的C/C++程式設計規範總結

一、檔案排版方面 1. 包含標頭檔案  • 先系統標頭檔案,後用戶標頭檔案。  • 系統標頭檔案,穩定的目錄結構,應採用包含子路徑方式。  • 自定義標頭檔案,不穩定目錄結構,應在dsp中指定包含路徑。  • 系統標頭檔案應用:#include <xxx.h>  • 自定義同

MISRA C - 嵌入式系統 C 程式設計規範

MISRA C - 嵌入式系統 C 程式設計規範 MISRA C is a set of software development guidelines for the C programming language developed by MISRA (Motor Industry S

C++ Coding Standard - C++ 程式設計規範

C++ Coding Standard - C++ 程式設計規範 https://users.ece.cmu.edu/~eno/coding/CppCodingStandard.html Adapted from http://www.possibility.com/Cpp/CppCod

一張圖總結Google C++程式設計規範(Google C++ Style Guide)【轉】

(轉自:https://blog.csdn.net/voidccc/article/details/37599203?utm_source=blogxgwz0) Google C++ Style Guide是一份不錯的C++編碼指南,我製作了一張比較全面的說明圖,可以在短時間內快速掌握規範的重點

C/C++程式設計規範

1、函式註解 /*************************************************************************** * Function : ModbusTcpReadInputBits * Description: Creat socket

C/C++程式設計規範整理

一、基本準備工作 1、設計工程目錄結構 (1)基本原則: 【1】工程本身的檔案、專案編譯生成的中間檔案放一個資料夾; 【2】最終生成的目標檔案單獨放一個資料夾; 【3】如果有工程依賴的庫檔案等單獨放一個資料夾; 【4】使用者程式碼檔案放單獨一個資料夾,或者將標頭檔案和原始檔單

Google C++程式設計規範

1 標頭檔案 1.1 #define的保護 有標頭檔案都應該使用#define防止標頭檔案被多重包含( multiple inclusion) ,命名格式應當是:<PROJECT>_<PATH>_<FILE>_H_。為保證唯

C程式設計規範

C程式設計規範 一、命名 1、程式檔案命名:程式檔案命名要求具備模組縮寫,功能描述等資訊。採用每個單詞首字母大寫方式。 exzamp: Driver.c FontManage.c 2、函式命名 DataManageValueSet(int iValue); 3、結構體命

C++程式設計規範 8-24章

第八章 常量 1.不要讓常量成員函式修改程式的狀態:不要修改成員、靜態成員、、全域性變數、其他物件。 第九章 過載 1.儘量避免過載宰模板型別上:可能存在二義性 第十章 操作符 1.區分作為成員函式和作為友元的操作符:operator+=()、operator=()

C++程式設計規範 4-7章

第4章 類的設計和宣告 1.提高類內聚合度 2.努力使類的介面少而完備 3.保持(不同)類的不同介面在實現原則上的一致性 4.避免為每個類成員提供訪問函式 5.不要在類定義時提供成員函式體 6.恰當選擇成員函式、全域性函式和友元函式 虛擬函式必為成員函式

C++程式設計規範 1-3章

第1章 命名原則 1.型別名:每個英文單詞的第一個字母大寫,其他小寫,最後以_T結尾。 class PageCode_T { //... }; 原因: 防止與變數名衝突 使得型別名更加清晰 區分名字中各單詞也可以用下劃線 縮寫字當作普通字處理

c程式設計語言 2-4 2-5

第五彈! 第五彈!第五彈! #include <stdio.h> #define max 1000 void InputSpring(char s[]); //void mySqueeze(char s1[],char s2[]); void any(char s

C++程式設計規範

技  術  文  件                 技術檔名稱:編碼規範_C++    &n

C# 程式設計規範

      技  術  文  件                 技術檔名稱:編碼規範

自己總結的C#編碼規範--2.命名選擇篇

上一篇文章講了識別符號命名的約定,今天講下識別符號命名的選擇。 簡單的講,看到一個識別符號一定要可以見名知意。 名字一定要能夠表達出識別符號的含意 識別符號名字必須要表達出該識別符號的意義,絕對不可以使用無意義的v1,v2…vn之類的命名。 public static void

C/C++ 程式設計規範 試題

一BOOL float 指標變數 與零值比較的if語句 1.寫出BOOL flag 指標變數與零值比較的if語句。 if(flag) if(!flag) 2 寫出float x與零值比價的if語

東軟C#程式設計規範

C#程式設計規範   Version 2.0 目錄 第一章 概述  1 方便程式碼的交流和維護。    2 不影響編碼的效

google C++ 程式設計規範中的禁用複製建構函式和賦值運算子

在google C++程式設計規範中有下面一段描述: 僅在程式碼中需要拷貝一個類物件的時候使用拷貝建構函式;不需要拷貝時應使用 DISALLOW_COPY_AND_ASSIGN。 定義:通過拷貝新建物件時可使用拷貝建構函式(特別是物件的傳值時)。 優點:拷貝建

C#程式設計規範

大家好像都一個版本此處轉 http://tech.ddvip.com/2008-11/122794615696216.html http://tech.ddvip.com/2008-11/122794629896218.html 1. 簡介 3