首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

資深程式設計師的開發習慣全公開:從目錄結構到代碼規範

     編輯:Delphi

前言

關於開發習慣的思考積壓已久,今日不吐不快。發文動機或許包含博取積分,但更希望能為同行提供參考,同時也期待各位批評指正,共同精進。

一、建立標準化專案目錄

新專案第一步:建立獨立目錄(目錄名與專案同名或簡潔明確)。目錄下再建立以下子目錄:

  • <Doc>:存放需求說明、概要設計、詳細設計等開發文檔
  • <Source>:存放 .dpr、.pas、.dfm 等原始碼
  • <Dcu>:存放編譯產生的 .dcu 檔,與原始碼分離保持 Source 整潔
  • <Bin>:存放輸出檔(.exe、.dll、.ocx 等)
  • <Log>:存放日誌檔,習慣放一個「專案名_程式設計師日誌.txt」
  • <Images>、<Wav>、<Avi> 等:依資源類型分類存放

二、IDE 專案選項配置

在 Delphi 中建立新專案並存入 Source 目錄,同步設定:

  • 選擇耐看且與專案相關的自訂圖示(總比預設醜圖示強)
  • Project Options → Directories/Conditionals:Output Directory 指向 Bin,Unit output Directory 指向 Dcu

三、常數單元集中管理

新增單元 unt<專案名>Consts.pas,集中存放專案所有常數,避免硬編碼散落各處。

四、表單與單元命名規範

採用匈牙利命名法:登入視窗表單命名 FrmLogin,對應單元 untLogin。去除前綴後名稱保持一致。單元頭部務必加入註解:功能描述、作者、版權、建立時間、最後修改時間、修改歷史等。

表單 Caption 設為類別名(如 TFrmLogin),而非預設 FrmLogin——因為設計的是類別而非實例。「操作員登入」等顯示標題屬執行期工作,存於常數單元以 ResourceString 或 Const 定義,在 OnCreate 事件動態賦值:

procedure TFrmLogin.FormCreate(Sender: TObject);
begin
  Caption := csLoginTitle;
  ...
end;

五、善用 Format 函數

需顯示「生日:1976/3/18」時,勿用字串相加。習慣在常數單元定義 csBirthDayFormat = '生日:%d/%d/%d',再用 Format(csBirthDayFormat, [iYear, iMonth, iDay]) 組裝。優勢顯而易見:顯示格式只需在一處維護。Format 功能強大,深得我心,你呢?

六、註冊表與 INI 檔案的統一存取

早期分別用 TRegistry、TIniFile,介面不統一。後發現 TRegistryIniFile 繼承自 TCustomIniFile,TIniFile 亦然。故可用抽象類 TCustomIniFile 統一存取:

var csmIniFile: TCustomIniFile;
begin
  if blUseIniFile then
    csmIniFile := TIniFile.Create(csRootKey)
  else
    csmIniFile := TRegistryIniFile.Create(csRootKey);
  // 後續統一用 csmIniFile 讀寫
end;

七、面向抽象類設計流操作

TFileStream、TMemoryStream 均繼承自 TStream。定義介面時傾向用抽象類型參數:

function Save(AStream: TStream): Boolean;  // 靈活、具前瞻性
// 優於
function Save(AStream: TFileStream): Boolean; // 死板、僅限檔案流

習慣:若存在抽象類,盡量將參數定義為抽象類型——我們無法預見未來。

八、多用 TAction 簡化 UI 狀態同步

Delphi 4 引入 Action 概念與 TActionList,徹底解決控制項狀態同步煩惱。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved