| 類型 | 前綴 | 範例 | 對應單元 |
| Form 類別 | TFrm | TFrmLogin | untLogin.pas |
| 一般類別 | T | TUserManager | untUserManager.pas |
| 資料模組 | TDm | TDmMain | untDmMain.pas |
單元檔名去除前綴後與 Form 類別名一致。單元標頭加入標準註解區塊:功能、作者、版權、建立/修改時間、修改歷程。
五、視窗 Caption 於執行期指派
設計期 Caption 設為類別名 (TFrmLogin) 利於識別;執行期 OnCreate 從常數單元載入使用者友善標題:
procedure TFrmLogin.FormCreate(Sender: TObject);
begin
Caption := csLoginTitle; // 定義於 Consts 單元
// ...
end;
六、善用 Format 函式組裝字串
在常數單元定義格式字串:
csBirthDayFormat = '生日:%d/%d/%d';
使用時:
s := Format(csBirthDayFormat, [iYear, iMonth, iDay]);
優點:格式集中維護、避免重複 IntToStr、支援對齊/精度格式化。
七、統一存取登錄表與 INI 檔:TCustomIniFile 多型
TRegistryIniFile 與 TIniFile 同繼承自 TCustomIniFile,利用抽象基類實現程式碼複用:
var
Ini: TCustomIniFile;
begin
if UseIniFile then
Ini := TIniFile.Create(FileName)
else
Ini := TRegistryIniFile.Create(RootKey);
try
Ini.WriteString('Section', 'Key', Value);
// 同一套 API 同時支援 INI 與登錄表
finally
Ini.Free;
end;
end;
八、面向抽象類別設計:TStream 範例
TFileStream、TMemoryStream 同繼承 TStream。定義介面/參數時使用抽象基類:
{ 彈性佳:支援檔案、記憶體、網路、壓縮等任意串流 }
function Save(Stream: TStream): Boolean;
{ 死板:僅限檔案串流 }
function Save(Stream: TFileStream): Boolean;
原則:參數類型盡量用抽象基類,面向未來擴充。
九、大量使用 TAction 簡化 UI 狀態同步
TActionList + TAction 統一管理命令啟用/停用、可見、執行邏輯,按鈕、選單、工具列自動同步,消除手動同步程式碼。
結語
習慣成就品質。這些慣例非一蹴而成,而是專案經驗沉澱。歡迎交流指正,共同精進。
- 上一篇文章: Delphi Hook 技術實現 DLL 注入:原理與完整程式碼解析
- 下一篇文章: Delphi 精確延遲函式:保持訊息迴圈回應的 Sleep 替代方案
Copyright ©
程式碼之家 All Rights Reserved