個人觀點隨筆-RAD和麵向物件 (轉)
個人觀點隨筆-RAD和麵向
網上經常有討論開發工具的優劣性文章。彷彿結果一定是一派要壓倒另一派。特別是RAD與非RAD的爭論。如“VC和BCB哪個更好”、“vs Dephi”等等。
有人曾經說做一個好的員一定要懂得。雖然、VB把API封裝了起來,簡化了工作,但也阻礙了成為高手的機會。極力倡導使用VC進行程式設計。我想之樣的人他一定是Win32的程式設計好手,是VC的熟練工種。但他一定對RAD的開發工具不甚瞭解,特別是Delphi。(VB暫且先不討論)。
RAD的開發工具確實很簡單。拖拽幾個,寫幾個事件。一個小程式就做完了。似乎對這個程式是怎樣執行的不甚瞭解。確實造成了一大批人對BCB,Delphi的誤解。BCB真簡單。我想敢說這樣的話的人不是一個剛剛對BCB入門的人,就是一個絕頂的WIN32程式設計師,對VCL和API很精通的人。第二種人那就無話可說了,他真的有資格說簡單。第一種人BCB的VCL不但會方便你的開發,而且他決不會成為你成為高手的機會。如果你精通 Pascal那麼VCL將成為你學習的絕好參考。
我要強調的是要多多弄清內部機理,不要成為的砌磚奴隸。
Nicrosoft的一篇文章寫得很好《把物件導向貫徹到底》。很多人用Delphi來做開發只是用到了它的元件提供的功能。很精通,精通什麼呢,精通應用元件。現成元件所有功能特性他都會。可離了現成元件他什麼也幹不了。元件能做的就是他能力的極限。一旦用到相對低階的API他就束手無策了。認為開發工具不足正是報漏了開發人員自身的不足。抱怨Delphi不能做低階的事,正報漏了他本身這方面能力的欠缺。如果不是,他完全可以自己去開發、去擴充套件它。用慣了RAD開發工具不要被它華麗的外表所迷惑而不去探求更深的東西。我常常見到這樣寫程式碼的程式設計師:
unit Unit1;
:namespace prefix = o ns = "urn:schemas--com::office" />
interface
uses
, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Button1.Caption:='開發';
end;
end.
畫線的的那行程式碼是有嚴重的邏輯錯誤的,雖然編譯可以透過。Form1不過是Tform1類的一個例項而已。我們現在寫的是一個TForm1的類。這段程式碼犯的錯誤就是以偏蓋全,以一個特例去描述一個類,這是典型的白馬非馬論。
最起碼的這句話應該這樣寫Button1.Caption:='快速開發';而最好要寫成Self. Button1.Caption:='快速開發';這才不會以偏蓋全。
我們要做的事物件導向,而不是基於物件。
要你去寫對一個的操作(如F檔案)你會如何寫呢?
定義一堆結構,寫一堆。然後去挨個這些函式對檔案進行操作。
還是定義一個DBF檔案的類,然後把對它的操作都封裝起來,只留下需要呼叫的函式(如讀、寫)作為公有。
或許第一種方法的程式碼要遠遠的少於第二種。但第二種有著第一種方法不可比擬的優勢。
1. 思路清晰,更符合人的邏輯思維。而第一種方法更像一盤散沙。
2. 可靠,我只把共有函式讓你呼叫,而其他的都由內部封裝好了,你根本看不見,也不需要考慮它是如何實現的。
3. 方便維護,哪個地方錯了我只要把這個類的相關部分作以下改動即可,不會造成混亂。
好處不止這些。
我的意思是說要多多運用物件導向的方法,不要成為基於物件的工人。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-996522/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 程式導向和麵向物件的對比(轉)物件
- 物件導向和麵向過程物件
- 關於物件導向和麵向過程本質的區別(個人感悟)物件
- JAVA基礎:我個人的物件導向的程式觀(轉)Java物件
- Python之物件導向和麵向過程Python物件
- 物件導向和麵向過程的區別物件
- 困惑:程式導向和麵向物件的結合?物件
- Javascript的函式式和麵向物件特性JavaScript函式物件
- 心得 : 物件導向和麵向過程的區別【分享】物件
- JavaSE —— 第11步 —— 最關鍵的一點(物件導向) 11.1物件導向和麵向過程的區別Java物件
- 物件導向和麵向過程程式設計的區別?物件程式設計
- 325工廠模式和麵向物件知識點總結(有點亂湊合看)模式物件
- 解釋下什麼是物件導向?物件導向和麵向過程的區別?物件
- 20200820 - 程式導向和麵向物件物件
- 簡單計算器的程式導向實現和麵向物件實現對比物件
- 我的物件導向程式觀物件
- php物件導向個人濃縮總結和例項PHP物件
- 物件導向筆記物件筆記
- 開發:隨筆記錄之 Json字串和物件的相互轉換筆記JSON字串物件
- 面向象和麵向過程的區別
- 物件導向的點名器物件
- DSL和麵向語言程式設計的崛起程式設計
- 轉向Kotlin——物件Kotlin物件
- “程序導向”和“物件導向”物件
- 物件導向:希望可以遇到對的那個人物件
- 觸及軟體架構(個人隨筆)架構
- 開通個人學習隨筆記錄筆記
- Go 筆記之物件導向Go筆記物件
- Python 物件導向筆記Python物件筆記
- 知識盲點 隨筆筆記筆記
- php物件導向知識點PHP物件
- 從物件導向到模式再到真正的物件導向 (轉)物件模式
- (Java筆記)物件導向基礎Java筆記物件
- 對JAVA的一些個人總結——物件導向Java物件
- JavaScript物件導向—物件的建立和操作JavaScript物件
- 物件導向技術概述 (轉)物件
- 第3章:抽象資料型別(ADT)和麵向物件程式設計(OOP) 3.2設計規約抽象資料型別物件程式設計OOP
- 《深入PHP物件導向、模式和實踐》讀書筆記本!PHP物件模式筆記