程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi編碼標准——一般的源代碼格式規則

Delphi編碼標准——一般的源代碼格式規則

編輯:Delphi
編碼標准主要是為開發組提供一種編程時的准則,使項目開發人員在編程時有一致格式可遵循。這樣,開發組中每個編程人員編寫的代碼能夠被其他人理解,從而提高代碼的可維護性,使得一套多人寫的軟件就像一人寫的,使得代碼更易理解。這要求大家使用一致的代碼樣式。 那麼,之所以老生常談介紹這些標准,是因為當新的開發人員加入項目開發組時,有的可能還不熟悉Delphi的編碼標准。       在這裡將分以下幾類來介紹這些標准: 1 一般的源代碼格式規則 2過程和函數 3 文件、窗體與數據模塊命名 4 包、組件命名 一般的源代碼格式規則 縮進 縮進就是每級間有兩個空格。不要在源代碼中放置制表符。這是因為,制表符的寬度隨著不同的設置和代碼管理實用程序(打印、文檔及版本控制等)而不同。 邊距 邊距設置為80個字符。源代碼一般不會因寫一個單詞而超過邊距,但本規則比較靈活。只要可能,長度超過一行的語句應當用逗號或運算符換行。換行後,應縮進兩個字符。 括號 在左括號與下一字符之間沒有空格。同樣,右括號與前一字符也沒有空格。 下面的例子演示了正確與不正確的空格。 CallProcedure( Parameters ); // 錯! CallProcedure (Parameters); // 正確! 保留字和關鍵字 Object Pascal語言的保留字和關鍵字總是完全的小寫。 begin...end begin語句必須單獨占一行。 例如,下面第一行是錯誤的,而第二行正確: for i:=0 to 10 do begin Statement end// 錯, begin 與for在同一行 for i:=0 to 10 do //正確! begin 在另外一行中 begin Statement end 本規則的一個特殊情況是,當begin為else語句的一部分時。 例如: if Condition then begin Statement end else begin Statement; end end語句總單獨一行。當begin不為else語句的一部分時,相應的end語句與begin語句的縮進量相同。 語句 (1) if_then_else語句 最有可能執行的情況應放在then子句中,不太可能的情況放在else子句中。 為了避免出現許多i f語句,可以使用case語句代替。 如果多於5級,不要使用i f語句。請改用更清楚的方法。 不要在i f語句中使用多余的括號。在源代碼中,括號只有在確實需要時才使用。 例如: if (I=42) then // 錯,括號是多余的 if (I=42) or (J=42) then // 正確,必須使用括號 如果在i f語句中有多個條件要測試,應按照計算的復雜程度從右向左排。這樣,可以使代碼充分利用編譯器的短路估算邏輯。如果Condition1比Condition2快,Condition2比Condition3快,則if語句應這樣構造:if Conditior1 and Condition2 and Condition3 then (2) case_else語句 case語句中每種情況的常量應當按數字或字母的順序排列。 每種情況的動作語句應當簡短且通常不超過4 ~ 5行代碼。如果動作太復雜,應將代碼單獨放在一個過程或函數中。case語句的else子句只用於默認情況或錯誤檢測。 (3) while 語句 建議不要使用exit過程來退出while循環。如果需要的話,應當使用循環條件退出循環。所有對w h i l e循環進行初始化的代碼應當位於w h i l e入口前,且不要被無關的語句隔開。任何業務的輔助工作都應在循環後立即進行。 (4) for語句 如果循環次數是確定的,應當用for語句代替while語句。 (5) repeat語句 repeat語句類似於while循環,且遵循同樣的規則。 (6) with語句 with語句應小心使用。要避免過度使用with語句,尤其是在with語句中使用多個對象或記錄。 例如: with Record1,Record2 do 這些情況很容易迷惑編程人員,且導致調試困難。 結構化異常處理 異常處理主要用於糾正錯誤和保護資源。這意味著,凡是分配資源的地方,都必須使用try... finally來保證資源得到釋放。不過,如果是在單元的初始/結束部分或者對象的構造器/析構器中來分配/釋放資源則例外。 (1) try... finally的用法 在可能的情況下,每個資源分配應當與try... finally結構匹配。 例如: //下面代碼可能導致錯誤 SomeClass1: = TSomeClass.Create; SomeClass2: = TSomeClass.Create; try {do some code} finally SomeClass.Free; SomeClass.Free; e n d ; //上述資源分配的一個安全方案是: SomeClass1: = TSomeClass Create; try SomeClass2: = TSomeClass Create; try {do some code} finally SomeClass2.Free; end; finally SomeClass1.Free; end; (2) try...except的用法 如果你希望在發生異常時執行一些任務,可以使用try...except。通常,沒有必要為了簡單地顯示一個錯誤信息而使用try...except,因為Application對象能夠自動根據上下文做到這一點。如果要在子句中激活默認的異常處理,可以再次觸發異常。 (3) try... except...else的用法 不鼓勵使用帶else子句的try...except,因為這將阻塞所有的異常,包括你沒有准備處理的異常。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved