亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Delphi > 正文

一名Delphi程序員的開發習慣(非技術問題)

2019-11-18 18:46:24
字體:
來源:轉載
供稿:網友

有關開發習慣的一些想法,如鯁在喉,不吐不快。究其發貼動機,當然不排除有騙取參與分的可能,但另一方面,也希望能給同行(念Xing)者提供一些建議,或者參考(希望不是誤人子弟)。同時,也希望各位能夠就我的這些陋習,發表一點看法,給出批評和指正的意見。謝謝。

 

一.建立工程目錄

       首先,第一步要做的,當然是給新項目建一個單獨的目錄(別笑)。目錄名稱與項目名稱同名,或者另取一個也可,只要清楚、簡練。然后,在此目錄中創建以下各個目錄:

       <Doc>:用來存放該項目相關的開發文檔(需求說明,概要設計,詳細設計等等等等);

       <Source>:用來存放Delphi源程序中的”.DPR”,”.Pas”,”.Dfm”等文件;

       <Dcu>:該目錄中存放”.Dcu”文件,將’.Pas’’.Dcu’文件分開存放只是為了讓Source目錄的內容更加清楚一些;

<Bin>:存放工程的輸出文件,比如”.Exe”,”.Dll”或者”.Ocx”等等;

<Log>:用來存放日志文件;通常在這個目錄中我會放一個”<項目名稱>程序員日志.Txt”文件。

<Images>:當然是存放工程中用到的圖片的目錄了。一般情況下,這個目錄是少不了的。假如還用到其他資源,那么也一樣建立各自的目錄,比如Wav,比如Avi等等。

 

二.設置工程選項

Delphi中創建一個新的工程,將此工程保存到Source目錄中,同時:

a.       選一個耐看的,與項目有些聯系的圖標作為這個工程的圖標。當然,這個圖標可能只是臨時用用的,但是總要比Delphi默認的那個難看的要好才行,要不然,怎么對得起自己?

b.       Project Options -> Directories/Conditionals頁面中的Output Directory設置為Bin目錄;

c.       Unit output Directory設置為Dcu目錄。

 

三.添加常量單元

       添加一個新的Unit,另存為“unt<工程名> Consts.Pas”,用來保存工程中用到的常量。

 

四.有關窗體(Form)及單元(Unit)

按照匈牙利命名法則給Form命名,則一個用來登錄的窗體可以命名為’FrmLogin’,而其單元名可以為’untLogin’。通常,兩個對應的FormUnit的名稱在除去’Frm’’unt’的縮寫后應當保持一致。

Unit的頭部添加本單元的注釋,注釋的格式可以參照Delphi源碼,但是至少應當包含以下幾項:功能描述;作者;版權;創建時間;最后修改時間;修改歷史等等。

將新創建好的FormCaption設置為該Form類的名稱,而不是使用Delphi默認的。比如,將Form1更名為FrmLogin后,此時我們獲得了TFrmLogin這個新的窗體類,并且Delphi自動將窗體的Caption更新為’FrmLogin’。依我看,該Caption應當為’TFrmLogin’才是,因為我們在設計的是一個窗體類TFrmLogin,而不是僅僅對FrmLogin進行操作。

TFrmLogin這樣功能明確的窗體類,許多人都有在設計期就將其Caption設置為諸如“操作員登錄”這種名稱的習慣。我的習慣是,象“操作員登錄”這樣的常量,通常存放在unt<工程名>Consts.Pas中,用ResourceString來定義,或者用Const來定義。至于窗體的Caption的命名,應當屬于運行期的工作。所以,我往往在TForm.OnCreate事件觸發之時才對Caption進行操作,比如:

procedure TFrmLogin.FormCreate(Sender: TObject);

begin

       Caption := csLoginTitle;

       ....

end;

 

五.關于Format函數的使用

       iYear,iMonth,iDay三個數據,要顯示諸如“生日:1976/3/18”這樣的信息,你通常怎么做?使用s := ‘生日:’+IntToStr(iYear)+’.’+IntToStr(iMonth)+’.’+IntToStr(iDay); 嗎?這樣實在是太累了。我的習慣是,在unt<工程名>Consts.Pas中增加一個常量csBirthDayFormat = ‘生日:%d/%d/%d’來保存顯示格式,然后使用s := Format(csBirthDayFormat, [iYear, iMonth, iDay]);這樣的語句完成數據的拼裝。這么做的好處顯而易見,那就是你只需在一個地方維護數據的顯示格式。

       Format函數功能強大,我對它很是推崇,你呢?

 

六.關于注冊表或者Ini文件的存儲

原先訪問注冊表我通常使用TRegistry,而訪問Ini文件通常使用TIniFile。這兩個類的使用方法各不相同,因此想要使用相同的代碼既能訪問注冊表又能訪問Ini文件幾乎是不可能的。真頭疼??!

終于我發現了救星!那就是TRegistryIniFile類。查看Registry單元,我們發現,TRegistryIniFile繼承自TCusomIniFile。而TIniFile也是繼承于TCusomIniFile。因此,使用抽象類TCusomIniFile來實現對注冊表或者Ini文件的訪問便是一舉兩得了。比如:

var

  csmIniFile: TCusomIniFile;

begin

  if blUseIniFile then//如果使用Ini文件

    csmIniFile:= TIniFile.Create(csRootKey)

  else

    csmIniFile:= TRegistryIniFile.Create(csRootKey);

  //接著就可以使用csmIniFileIni文件進行訪問,

//或者用類似訪問Ini文件的方式訪問注冊表。

 

七.關于TStream流以及TFileStreamTMemoryStream等等

       TFileStreamTMemoryStream都繼承自抽象類TStream,這意味著我們可以使用一套代碼完成對文件和內存的存取操作。因此,定義一些接口的時候,我往往傾向于將參數的類型定義為抽象類,而不是具體類。比如,要完成保存功能的一個函數,定義成

function Save(AStream: TStream): Boolean;

就比定義成

function Save(AStream: TFileStream): Boolean;

要靈活的多。

前一個定義是具有前瞻性的,因為它可以適用于以后可能出現的新型態的流。而后一個定義只適用于TFileStream這種流(當然包括TFileStream的子類),呆板多了。

我的習慣:如果存在抽象類,那么盡量將參數定義為抽象類的類型,畢竟,我們無法預見未來。

 

八.多使用TAction

       Delphi 4以后引入了Action的概念,并且在Standard組件欄中增加TActionList組件。使用Action的好處是,控件狀態同步的煩惱從此一掃而空!

        更多文章

 

Musicwind®@HangZhou.Zj.China


上一篇:在Delphi中編寫控件的基本方法

下一篇:delphi里播放flash

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲字幕在线观看| 精品国产区一区二区三区在线观看| 欧美日韩中国免费专区在线看| 欧美日韩综合视频网址| 亚洲欧美一区二区三区情侣bbw| 麻豆乱码国产一区二区三区| 欧美专区国产专区| 中文字幕亚洲一区二区三区| 久久97精品久久久久久久不卡| 国产专区欧美专区| 亚洲最新中文字幕| 国产精品老牛影院在线观看| 欧美日韩亚洲国产一区| 欧美日韩在线第一页| 中文字幕亚洲精品| 日韩在线视频免费观看高清中文| 亚洲天堂第一页| 日韩av毛片网| www.亚洲一区| 日韩在线欧美在线国产在线| 欧美激情综合亚洲一二区| 亚洲xxx视频| 日韩高清av在线| 91手机视频在线观看| 国模精品一区二区三区色天香| 国产亚洲一区二区精品| 亚洲欧美国产日韩中文字幕| 日产精品99久久久久久| 97视频免费看| 久久这里只有精品视频首页| 亚洲色图美腿丝袜| 日韩成人中文字幕| 亚洲一区国产精品| 日韩av日韩在线观看| 永久免费看mv网站入口亚洲| 91色在线视频| 欧美精品999| 在线播放日韩欧美| 国产精品久久久久久久9999| 久久久91精品国产| 美女久久久久久久久久久| 精品视频在线播放色网色视频| 亚洲精品999| 欧美精品www| 久久久黄色av| 国产va免费精品高清在线观看| 国产欧美日韩中文| 最近2019中文免费高清视频观看www99| 国内精品一区二区三区| 日韩免费黄色av| 97香蕉超级碰碰久久免费软件| 久久精视频免费在线久久完整在线看| 欧美日韩视频在线| 在线日韩精品视频| 欧美精品久久久久a| 午夜美女久久久久爽久久| 国产精品丝袜一区二区三区| 国产精品视频永久免费播放| 亚洲欧美成人一区二区在线电影| 亚洲精品91美女久久久久久久| 欧美成人sm免费视频| 亚洲成色999久久网站| 亚洲精品suv精品一区二区| 国产噜噜噜噜噜久久久久久久久| 亚洲女成人图区| 欧美乱大交xxxxx| 91精品久久久久久久久久入口| 91亚洲精品在线| 国产精品一区二区三区久久| 国产一区二区三区日韩欧美| 亚洲国产精品资源| 91九色国产视频| 欧美日韩亚洲精品一区二区三区| 国产精品久久久久久久午夜| 国产精品成人在线| 久久久久久久久久久亚洲| 色婷婷亚洲mv天堂mv在影片| 久久视频国产精品免费视频在线| 91精品国产高清自在线| 日韩av最新在线| 91系列在线播放| 亚洲人成啪啪网站| 成人国产精品一区| 国产精品久久久久久久av电影| 亚洲网站在线观看| 91成人在线观看国产| 日韩在线小视频| 精品亚洲aⅴ在线观看| 欧美日韩精品在线视频| 国产精品视频网| 91tv亚洲精品香蕉国产一区7ujn| 精品人伦一区二区三区蜜桃网站| 97**国产露脸精品国产| 狠狠躁夜夜躁久久躁别揉| 日本19禁啪啪免费观看www| 日韩欧美中文字幕在线播放| 欧洲精品在线视频| 久久精品国产欧美亚洲人人爽| 九九久久久久99精品| 中文在线资源观看视频网站免费不卡| 日韩免费不卡av| 亚洲在线观看视频| 亚洲国模精品一区| 久久乐国产精品| 精品亚洲国产成av人片传媒| 久久精品视频在线观看| 5252色成人免费视频| 亚洲激情视频在线播放| 久久亚洲综合国产精品99麻豆精品福利| 欧美日韩免费观看中文| 欧美日韩在线视频一区| 欧美激情18p| 欧美肥婆姓交大片| 成人在线一区二区| 国内精品国产三级国产在线专| 在线激情影院一区| 中文字幕欧美日韩精品| 日韩风俗一区 二区| 热re99久久精品国产66热| 欧美日韩亚洲激情| 欧美日韩中文字幕在线视频| 国产深夜精品福利| 国产日韩欧美视频| 黄色一区二区在线| 色偷偷噜噜噜亚洲男人的天堂| 欧美专区日韩视频| 亚洲综合最新在线| 日韩欧美第一页| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚州精品天堂中文字幕| 国产精品欧美在线| 亚洲最大中文字幕| 国产在线观看91精品一区| 91九色视频在线| 98精品国产高清在线xxxx天堂| 国产精品老牛影院在线观看| 久久99精品久久久久久噜噜| 久久99精品久久久久久琪琪| 欧美激情精品久久久久| 国产欧美精品一区二区三区-老狼| 久久久91精品国产| 亚洲精品www久久久久久广东| 国产精品嫩草影院一区二区| 裸体女人亚洲精品一区| 欧美日韩亚洲一区二区| 日韩视频免费在线| 日韩美女在线播放| 成人伊人精品色xxxx视频| 亚洲国产精品成人精品| 欧美日本中文字幕| 亚洲欧美999| 日韩在线欧美在线国产在线| 国产亚洲欧美aaaa| 最新国产精品亚洲| 国产精品毛片a∨一区二区三区|国| 日韩激情在线视频| 国产日韩专区在线| 懂色aⅴ精品一区二区三区蜜月| xvideos亚洲人网站| 日韩av在线高清| 97久久超碰福利国产精品…| 欧美极品美女电影一区| 久久久国产在线视频| 韩曰欧美视频免费观看|