我們平常都會寫很多程式碼,為公司,為自己或朋友。有時,為了驗證自己的一個想法,或學習
某一個技術,會寫出一些試驗性的程式碼。這樣的程式碼的生命週期很短,基本上不需要維護,隨意寫就可以
以。但是,當你真正要完成一個PRoject 的時候,程式碼設計就非常重要。因為這樣的程式碼需要長期
維護,不斷修改或增強的。設計凌亂的程式碼會讓維護非常困難或根本不可能,修改這樣的程式碼意味
著產生更多的bug 或是災難。
既然,程式碼設計如此重要,我們就不能忽視它。那麼,如何設計程式碼呢?物件導向程式設計技術可以幫
助我們。在此,插一些題外話,很多程式設計師將物件導向程式設計(OOP)技術和物件導向(OO)技術混淆。就
我自己的認知來說,物件導向技術是一門博大精深的學問,它是一種方法論或者說是一種世界觀,而面
向物件程式設計技術只是提供一種在編碼時運用物件導向的一種方法。
以下是筆者看了一些相關的書籍和在日常實踐中得出的一些體會,希望和大家分享一下。
首先,讓介面程式碼和功能程式碼分離。需要牢記的一個原則,就是不要將複雜的功能邏輯寫在介面代
碼中。介面窗體的實作檔案只用來存放介面程式碼,而將複雜的功能程式碼獨立出來。舉個簡單的例子,
假設要從某處獲得一個字串列表,然後顯示於TListBox 中,這樣的程式碼就是值得尊敬的:
ObjectXXX := TObjectXXX.Create;
ListBox1.Items := ObjectXXX.GetStringList;
ObjectXXX.Free;
這樣就把獲得該字串列表的複雜邏輯封裝在TObjectXXX 類別的實作程式碼中,並且可以將這個類別的定義
及實現獨立的放在一個.pas 檔案中,以便於維護。將介面程式碼和功能程式碼分開還有另一個好處,
一個功能的實作程式碼可能會被多個介面模組調用,如果將功能實作程式碼在需要的地方就複製一份,那麼
你就會有多個相同的模組需要維護,如果需要修改的話,呵呵,幾乎不可能保證你不會出錯。
其次,讓每個模組的邏輯盡可能簡單。經驗告訴我們,對於過於複雜的邏輯,會為人的理解帶來困
難。所以,盡可能的讓每個模組的程式碼簡單,一般不要超過25行程式碼。當你發現你寫的邏輯正在趨於
複雜,那麼這個時候是你尋找物件的時機了,看看能不能將其中的一些邏輯獨立出來。
最後,就是要注意變數的命名。經常查看VCL 原始碼,你會發現,VCL類別中私有成員變數都以“F”
打頭,類別名稱都以「T」打頭等等這樣的規則。這樣有什麼好處?當別人查看這樣的程式碼時,一旦看到“F”
開頭的,立刻可以知道它是該類別的私有成員,方便程式碼的維護。