編碼工藝Coding Techniques)-命名和注釋

來源:互聯網
上載者:User

轉載請註明出處:http://blog.csdn.net/horkychen

(節選自MSDN-Coding Techniques and Programming Practices)

命名 (Names)

命名最有利於瞭解程式的邏輯結構。一個名字說明是"什麼(what)”比說明"如何(how)"更重要。通過命名可以避免暴露底層的實現,從而保留一個抽象層,簡化了程式的複雜性。例如,你可以使用GetNextStudent()代替GetNextArrayElement()。

一個命名的宗旨是,命名應當基於它的目的進行推敲。名稱必須簡潔且意義明確。對編程(programmatically)而言,命名就是為了易於區分彼此。表達準確的名稱便於閱讀,也便於看代碼的人理解。不過具體的命名方式仍受限於所用的語言和遵循的標準。

以下是推薦的命名技巧:

常式(Routines, 過程或函數)

  • 避免可能被誤解的名稱,多為主觀性的名詞,如 Analyze()函數,或變數 xxK8。這樣的名字存在歧義。
  • 在物件導向的語言,類的屬性名稱中不需要包含類的名稱。如 Book.BookTitle。可以使用 Book.Title代替。
  • 使用動詞 - 名詞(動賓)的結構為方法命名, 如 CalculateInvoiceTotal()。
  • 在允許函數重載的語言中,所有重載應該執行類似的功能。對於那些不允許函數重載的語言中,為相似功能的函數建立一個命名標準。

變數(Variables)

  • 如果需要,在變數名後追加計算限定符(Avg,Sum,Min,Max,Index)。
  • 在變數名中成對使用反義詞,如min/max, begin/end, and open/close,以及get/set等等。
  • 由幾個單詞串連的變數名稱,使用大小寫混合的格式,以簡化它們。此外,為了協助區分變數和常式(函數,routine),常式名稱使用Pascal命名法,所有單詞的首字母都為大寫(CalculateInvoiceTotal)。變數名則使用駝峰命名法(Camel casing)(如documentFormatType),除第一個單詞首字母小寫外其餘每個單詞除首字母全部大寫。
  • 布爾變數名稱應當有是/否或真/假的意味,如 fileIsFound.
  • 在命名狀態變數時,避免使用Flag。相對於布爾值,它們可能有兩個以上的值。相對於documentFlag,可以使用一個更具描述性的名稱,如documentFormatType。
  • 即使只在幾行代碼中出現的一個臨時變數,也盡量使用有意義的名稱。只把i,j這樣的單字母變數用作小的迴圈變數。
  • 如果使用匈牙利命名法,定義一個明確的標準首碼列表,以方便項目中的開發人員使用。欲瞭解更多資訊,請參閱“匈牙利標記法”
  • 可以為變數名增加一個符號來標識範圍,如首碼g_的全域變數和m_的模組/類成員變數。
  • 常量應該全部大寫,且在單詞間用底線隔開。如NUM_DAYS_IN_WEEK。對於枚舉變數,應當有一個共同的首碼。如FONT_ARIAL或FONT_ROMAN。

資料表(Tables)

  • 命名表(tables)時,以單數形式命名。例如,應當使用Employee,而不是Employees。
  • 表中的列命名時,不要重複的表的名稱,例如,避免在名為Employee的表中定義欄位EmployeeLastName。
  • 不要在列的命名中包含資料類型。日後變更資料類型時,這樣就可以簡化工作。

其它(Miscellaneous)

  • 少使用縮寫。如果使用了,就必須要保持一致。縮寫應該只有一個意思,同樣,相應的詞彙也應該只有一個縮寫。例如,如果使用min代表最小化,那就不要讓它表示分鐘(minute)的縮寫。
  • 當命名函數時,可以包含對傳回值的描述。如GetCurrentWindowName()。
  • 檔案和檔案夾的名稱,就像程式名稱一樣,應準確描述他們所服務的目的是什麼。
  • 避免不同類型的元素使用相似的名稱,如稱為ProcessSales()函數和變數iProcessSales。
  • 避免同音字命名以方便Code review,如write和right。
  • 元素命名時,應避免使用常常拼字錯誤的單詞。當然也要瞭解美式英語和英式英語中一些單詞的差異,如color/colour (都是顏色) and check/cheque(都是支票)。
  • 避免使用列印符號標識資料類型。如使用$代表字串或者%代表整數。

注釋(Comments)

軟體文檔存在兩種形式:外部和內部。外部文檔在原始碼之外,如規範,協助檔案和設計檔案。內部文檔則在原始碼中,是由開發人員在開發時寫的注釋組成。

最大的挑戰就是如何確保注釋能與原始碼同步更新。儘管正確注釋原始碼不會左右程式運行,但對於維護特別複雜或繁瑣的軟體,它卻是無價的。

 

以下是推薦的注釋技巧:

  • 修改代碼時,同步更新注釋。
  • 在每個方法或函數的開始,提供標準的注釋模板(如Doxygen注釋),以指樣本程的目的,假設和限制。注釋模板應該是一個簡單的介紹,瞭解方法或函數的目的和功能。
  • 避免程式碼的末尾添加註釋,它會使代碼更難閱讀。不過,可以在變數聲明後添加註釋。在這種情況下,可以使用定位字元對齊所有行注釋。
  • 避免自訂的注釋集合(clutter comments)方法,如整行的星號。可以使用空格區隔代碼和注釋。
  • 避免在註解區塊周圍包上列印符號(typographical frame, $,#,%之類的)。可能你覺得會比較好看,但卻很難維護。
  • 在正式發布之前,移除所有臨時或無關的注釋,以避免影響日後的維護工作。
  • 如果你需要注釋一段複雜的代碼,應當先檢查,看看能不能重寫(重構)。盡量不要注釋糟糕的代碼,而應當重構它。必須在效能和可維護性之間尋求平衡。
  • 注釋要使用完整的句子,它的目的是澄清代碼,而不是再生歧義。
  • 及時注釋你的代碼,因為以後更沒時間去做。此外,趁熱打鐵的過一遍代碼會比6周會再做更為有效。
  • 不要有多餘的注釋,如幽默的旁白或對公司的控訴。
  • 使用注釋來解釋代碼的意圖,而不是代碼的翻譯。
  • 注釋任何代碼中比較隱晦的部分。
  • 為了防止問題重複出現,給bug修複和解決方案的代碼加上注釋。 這對於團隊尤為重要。
  • 為包含迴圈和邏輯分支的代碼添加註釋。這些是有助於讀者閱讀代碼的關鍵位置。
  • 使用空格分隔注釋,可以有突出的作用,更易於定位。(Separate comments from comment delimiters with white space. Doing so will make comments stand out and easier to locate when viewed without color clues.)
  • 在整個程式中,使用統一的風格,用一致的標點和結構來添加註釋。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.