代碼風格規範

代碼風格的基本原則是:簡明,易讀,無二義性。

-------------------------------------------------

1、  縮進

    是用Tab鍵好,還是2、4、8個空格?

    推薦:4個空格,在VS2005和其他的一些編輯工具中都可以定義Tab鍵擴展成爲幾個空格鍵。不用 Tab鍵的理由是Tab鍵在不同的情況下會顯示不同的長度。4個空格的距離從可讀性來說正好。


2、  行寬


    行寬必須限制,但是以前有些文檔規定的80字符行寬太小了(以前的計算機/打字機顯示行寬爲80字符),現在時代不同了,可爲100字符。

3、  括號


    在複雜的條件表達式中,用括號清楚地表示邏輯優先級。


4、  斷行與空白的{ }行

    最精簡的格式A:

if (condition)    DoSomething();
   else     DoSomethingElse();

   有人喜歡這樣,因爲可以節省幾行,但是不同的語句(Statement)放在一行中,會使程序調試(DeBug)非常不方便,如果要一步一步觀察condition(condition有可能是包含函數調用的複雜表達式)中各個變量的變化情況,單步執行就很難了。

   上面程序中沒有明確的“{”和“}”來判斷程序的結構,在有多層控制嵌套的時候,就不容易看清結構和對應關係。
    採用如下風格的程序:
if ( condition) {
       DoSomething();
    } else {
       DoSomethingElse();
    }
或者
if ( condition)
  {
       DoSomething();
   }
   else
  {
      DoSomethingElse();
   }

5、  分行

   不要把多行語句放在一行上。
a = 1; b = 2;           // bogus
   if (fFoo) Bar();        // bogus

   更嚴格地說,不要把不同的變量定義在一行上。
Foo foo1, foo2;         // bogus

6、  命名

    採用有意義的變量和方法名稱。
    一般使用匈牙利命名規範。


7、  下劃線問題

    下劃線用來分隔變量名字中的作用域標註和變量的語義,如:一個類型的成員變量通常用m_來表示。

8、  大小寫問題

    由多個單詞組成的變量名,如果全部都是小寫,很不易讀,一個簡單的解決方案就是用大小寫區分它們。

    Pascal——所有單詞的第一個字母都大寫;
    Camel——第一個單詞全部小寫,隨後單詞隨Pascal格式,這種方式也叫lowerCamel。

    一個通用的做法是:所有的類型/類/函數名都用Pascal形式,所有的變量都用Camel形式。
    類/類型/變量:名詞或組合名詞,如Member、ProductInfo等。
    函數則用動詞或動賓組合詞來表示,如get/set; RenderPage()。


9、  註釋

   誰不會寫註釋?但是,需要註釋什麼?
   不要註釋程序是怎麼工作的(How),你的程序本身就應該能說明這一問題。

//this loop starts the i from 0 to len, in each step, it
   // does SomeThing
   for (i = 0; i<len; i++)
  {
        DoSomeThing();
   }
   以上的註釋是多餘的。

   註釋是用來解釋程序做什麼(What),爲什麼這樣做(Why),以及要特別注意的地方的,如下:
//go thru the array, note the last element is at [len-1]
   for (i = 0; i<len; i++)
  {
      DoSomeThing();
   }

   複雜的註釋應該放在函數頭,很多函數頭的註釋都是解釋參數的類型等的,如果程序正文已經能夠說明參數的類型in/out等,就不要重複!

   註釋也要隨着程序的修改而不斷更新,一個誤導的(Misleading)註釋往往比沒有註釋更糟糕。

   另外,註釋(包括所有源代碼)應只用ASCII字符,不要用中文或其他特殊字符,它們會極大地影響程序的可移植性。

    在現代編程環境中,程序編輯器可以設置各種好看的字體,我們可以使用不同的顯示風格來表示程序的不同部分。

發佈了26 篇原創文章 · 獲贊 9 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章