本文為 Delphi 程式碼規範系列第一部分的第 1 節,確立規範目的、通用格式規則 (縮排、Begin/End、空格)、Object Pascal 語法規範 (保留字大小寫、程序/函數命名、參數規則、命名衝突解決)。
目的:統一公司軟體開發人員原始碼撰寫習慣,使每位組員皆能閱讀理解他人代碼,便於二次開發與系統維護。
範圍:適用於所有納入配置管理的 Delphi 專案原始碼。
begin、判斷 (if/case)、迴圈 (for/while/repeat)、異常處理 (try)、with、記錄/類別宣告end、until、except/finally
// 正確:獨立行 begin/end,縮排 2 空格
if TmpInt <> 100 then
TmpInt := 100; // 單行陳述式可不加 begin/end
// 多行區塊
for I := 0 to 10 do
begin
DoSomething(I);
DoAnother(I);
end;
begin 與 end 必須獨佔一行begin/end
// 錯誤
for I := 0 to 10 do begin
end;
// 正確
for I := 0 to 10 do
begin
end;
I := I + 1、a and bif (a > b) then (非 if ( a > b ) then)procedure Test(Param1: Integer; Param2: string);全部小寫:begin, end, if, then, else, for, to, do, while, repeat, until, try, except, finally, class, type, var, const, procedure, function, property 等。
procedure SetUserName)function GetUserName: string)
// 錯誤
procedure formatharddisk;
// 正確
procedure FormatHardDisk;
function GetUserName: string;
procedure SetUserName(const Value: string);
procedure Foo(Param1, Param2, Param3: Integer; Param4: string);procedure SomeProc(AUserName: string; AUserAge: Integer);當 uses 子句中多個單元包含同名程序/函數,後引用者生效。為避免「uses-clause-dependent」隱性 Bug,呼叫時必須加上單元前綴:
SysUtils.FindClose(SR);
Windows.FindClose(Handle);
| 項目 | 規範 | 關鍵字 |
|---|---|---|
| 縮排 | 2 空格/層,禁 Tab | Indentation |
| Begin/End | 獨立行 | Block Structure |
| 空格 | 運算子雙側、參數逗號後 | Spacing |
| 保留字 | 全小寫 | Keywords |
| 程序/函數名 | PascalCase,Set/Get 前綴 | Naming |
| 參數 | 同型合併、A 前綴避衝突 | Parameters |
| 跨單元同名 | 加單元前綴限定 | Qualification |
這些基礎格式規範是團隊協作的「交通規則」,雖不影響編譯結果,卻決定了代碼的可讀性、可維護性與專業度。建議配合 Jedi Code Format (JCF) 或 IDE 內建 Format Source (Ctrl+D) 自動化執行,消除人工疏漏。