黄色在线观看视频-黄色在线免费看-黄色在线视频免费-黄色在线视频免费看-免费啪啪网-免费啪啪网站

首頁 考試吧論壇 Exam8視線 考試商城 網絡課程 模擬考試 考友錄 實用文檔 繽紛校園 英語學習
2010考研 | 自學考試 | 成人高考 | 專 升 本 | 法律碩士 | MBA/MPA | 中 科 院
四六級 | 商務英語 | 公共英語 | 職稱日語 | 職稱英語 | 博思 | 口譯筆譯 | GRE GMAT | 日語 | 托福
雅思 | 專四專八 | 新概念 | 自考英語 | 零起點英韓語 | 在職申碩英語
在職攻碩英語 | 成人英語三級
等級考試 | 水平考試 | 微軟認證 | 思科認證 | Oracle認證 | Linux認證
公務員 | 報關員 | 報檢員 | 外銷員 | 司法考試 | 導游考試 | 教師資格 | 國際商務師 | 跟單員
單證員 | 物流師 | 價格鑒證師 | 銀行從業資格 | 證券從業資格 | 人力資源管理師 | 管理咨詢師
期貨從業資格 | 社會工作者
會計職稱 | 注會CPA | 經濟師 | 統計師 | 注冊稅務師 | 評估師 | 精算師 | 高會 | ACCA | 審計師
法律顧問 | 會計證
一級建造師 | 二級建造師 | 造價師 | 監理師 | 安全師 | 咨詢師 | 結構師 | 建筑師 | 安全評價師
房地產估價師 | 土地估價師 | 設備監理師 | 巖土工程師 | 質量資格 | 房地產經紀人 | 造價員
投資項目管理 | 土地代理人 | 環保師 | 環境影響評價 | 物業管理師 | 城市規劃師 | 公路監理師
公路造價工程師 | 招標師
執業護士 | 執業醫師 | 執業藥師 | 衛生資格
您現在的位置: 考試吧(Exam8.com) > 軟件水平考試 > 系統分析師 > 正文

Delphi開發中幾種代碼復用方式及其比較

  我們在軟件開發中,經常會碰到多處代碼相同或相似的地方,如何處理這種情況,不僅對個人,而且對于一個團隊,是一個重要的問題。代碼復用的作用也不僅是使得代碼編寫簡單、減少工作量。只討論在一個只使用delphi作為開發工具的團隊如何有效的進行代碼復用,如何在開發進度、軟件維護之間取得平衡。這里以領導的一次開發作為例子。

  最原始的辦法,復制、粘貼,不同的地方稍作修改。恐怕每個人都曾經使用過這種方法。這無疑在寫程序時是最快的方法。不過,其缺點也是明顯的,別的不說,這種方式阻礙了人的思考,功能確實完成了,但是錯過了自己提升自己的機會。表面看是節約了時間,實際是浪費了自己。我當年使用這種方法時,總覺得自己更象一個泥瓦匠。

  誰都會對這種方式說"不"嗎?問題在于我在實踐中發現,更多的程序員傾向于這樣編程。我不得不強制執行一些看起來是微不足道甚至是不完全正確的的細節標準,例如:所有的SQL語句必須在DataModal中。大多數程序員反對這一條,反對的理由有很多種,有些不乏道理。不過更多的是程序員感覺這樣編程變得繁瑣,感到受到了約束。他們反問在Form中直接寫sql語句多好,又容易看懂,不需要看程序時跳來跳去的。我只好打開他們曾經完成的系統,使用Find in File 功能,搜索結果表明同樣的sql語句出現了若干次。如果不有效的解決這個問題,我實在難以想象如何向程序員灌輸如同業務邏輯和界面邏輯分開的概念。好在有些程序員開始考慮這個問題,他向我提出這樣的方案:把所有的sql語句寫在單獨unit中,供所有的unit調用。雖然我知道,這樣做只是為了復用而復用,但是我仍然鼓勵這種做法,因為能復用總比不能復用強,半塊面包總強于沒有面包。

  使用函數。我發現這是大多數程序員喜歡使用的方法。從面向過程的程序來說,函數調用幾乎是唯一的代碼復用方法了。在開發組討論的過程中,程序員們也最喜歡使用這種方式作為系統之間的接口。這次開發中終于把權限、流程和打印系統單獨分裂出來,由單獨的程序員開發,提供給其他系統調用。如何調用?程序員首先想到的就是函數調用。確實函數調用也解決了不少的問題。

  隨著程序不斷的開發,系統的復雜度也在不斷增加,這時候以函數作為接口的方式也顯得越來越復雜。以一個簡單的例子而言,權限系統處理操作員管理、系統登陸驗證等功能,所以系統都需要當前登陸操作員的信息。開始是想的比較簡單,只要知道登陸操作員的id,那么其他相關信息都可以通過權限系統不同的引出函數來查詢,但考慮到操作員信息的通用性,而且為其提供若干個引出函數就顯得過于繁瑣。我們設計了一個操作員類,每個系統都有其接口聲明,而具體實現在權限系統中。在系統中增加一個全局操作員對象,這個對象在系統登陸時創建,記錄了登陸操作員的所有信息。其他系統只要訪問這個全局對象就能得到登陸操作員的信息,包括其所屬部門,登陸時間等等。這樣做的好處有

  (1)隱藏了實現的細節,不僅隱藏了數據庫設計,也隱藏了代碼實現的細節。例如后來由于種種原因,操作員的表結構發生了變化,而其他系統對此可以一無所知。后來權限系統也重寫了讀取權限部分,同樣,其他系統也一無所知,只是感覺速度變快了。

  (2)模塊之間是松耦合。

  (3)提高程序員的水平。

  最后一點恐怕有人懷疑,我要更多的解釋。在討論如何得到當前登陸操作員信息時,開始甚至有程序員提出這樣的方法:設置全局變量操作員編號變量,讓其他系統利用這個id直接讀數據庫中得到信息的。

  代碼復用還有應該重要的方面是界面的復用。一次開發中必然會有部門界面使用了相同的元素。這里的代碼復用主要有三個手段,框架、控件、窗口繼承。

  還是舉一個簡單的例子,這次開發中的部門是按照樹型結構來描述的,很多個界面上需要出現這個部門樹,比如資料管理界面、比如人員管理界面,界面的左邊都是這顆部門樹。在不同的界面中又有不同的處理,相應不同的事件。這方面,Delphi為我們提供了一個好的方法:Tframe。我更傾向于認為Frame就是一組控件及相關代碼的集合,雖然在設計時它和Form比較相似。在部門樹這個Frame中,只有一個Treeview,關鍵在于它已經具備了按照樹型顯示部門能力,而且,更進一步,你可以在其上面進行拖拽來完成部門調整的功能。當然對于不需要這個功能的窗口,可以簡單的設置一個屬性來禁止這個功能。

  框架被程序員了解后得到了大量的使用。大家感到確實能非常方便的解決很多問題。而且,對于框架的修改會被所以使用它的窗口有效,不用因為要修改某個共同的地方找遍工程中的每個窗口了。

  在Delphi推出Tframe之前的版本,可以使用窗口來代替它。其中的區別不在中討論了。

  控件無疑是Delphi最令人心動的了,在眼花繚亂的無數控件面前往往會迷失。控件和框架的作用有相似的地方,不過普遍認為控件更加通用一些,而框架只是用在特定的程序中。如果團隊中擁有擅場于此的高手自然能讓團隊如虎添翼,沒有也不必黯然神傷,因為普通的控件編寫也沒有想象的那么難。

  同樣舉一個簡單的例子。這次開發使用了Ado作為數據聯接,adoDataset有sort屬性,可以完成本地排序的功能。大家知道許多優秀的Dbgrid控件都能實現點擊標題欄自動排序的功能。我們也做了一個增強的dbgrid來實現這個功能,利用ado的特性,非常簡單,幾句代碼就可以了。當然還有其他增強,來適應這個專業系統的其他方面。

轉帖于:軟件水平考試_考試吧
文章搜索
Delphi開發中幾種代碼復用方式及其比較網友評論網友評論
版權聲明 --------------------------------------------------------------------------------------
    如果軟件水平考試網所轉載內容不慎侵犯了您的權益,請與我們聯系,我們將會及時處理。如轉載本軟件水平考試網內容,請注明出處。
 gaoxiaoliang 
 
主站蜘蛛池模板: ak福利午夜在线观看 | 97福利视频精品第一导航 | 色老头在线观看精品 | 黄色网页在线播放 | 久久99久久99精品免观看麻豆 | 欧美一级特黄乱妇高清视频 | 久久综合九色综合97小说 | 欧美巨大xxxx做受高清 | 成人区在线观看免费视频 | 国产日韩亚洲欧美 | 77久久| 欧美激情综合色综合啪啪五月 | 亚洲第一视频在线播放 | 成人免费一级片 | 日韩精品免费看 | 曰批免费视频播放在线看片一 | 欧美操片在线观看 | 国产hd| 日韩18| 欧美日韩国产成人高清视频 | 久久这里只有精品免费看青草 | 日日爽爽| 久草热在线观看 | 成人在线观看视频网站 | 日本三级黄色录像 | 女色专区 | 国产无遮挡裸体免费视频在线观看 | 欧美一区二区三区不卡免费 | 午夜免费片在线观看不卡 | 亚洲激情综合 | 高清欧美一级在线观看 | 羞羞视频污| 久久精品国产99国产精偷 | 亚欧乱色视频 视频在线 | 国产高清在线丝袜精品一区 | 免费国产成人α片 | 深夜福利免费 | 亚洲美女综合网 | 欧美超高清在线观看 | 久久免费黄色 | 成人免费观看网欧美片 |