<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    大大毛 的筆記

      DDM's Note

    哪怕沒有辦法一定有說法,
    就算沒有鴿子一定有烏鴉,
    固執(zhí)無罪 夢想有價,
    讓他們驚訝.

    posts - 14, comments - 23, trackbacks - 0, articles - 58
       :: 首頁 ::  :: 聯(lián)系 ::  :: 管理

    VB程式分工及內(nèi)部架構(gòu)

    Posted on 2009-02-17 17:52 大大毛 閱讀(295) 評論(0)  編輯  收藏 所屬分類: VB

    VB程式的結(jié)構(gòu)比較自由,通常做法就是新建一個工程,然後建幾個FORM畫面並在其中放上代碼就OK,但是當(dāng)一個工程的結(jié)構(gòu)略顯複雜的時候就會造成整個程式結(jié)構(gòu)上的沉重感,修改及添加功能時會造成力不從心的感覺,如果能夠維持一個比較簡潔的架構(gòu),程式就會在可讀性及靈活性上得到極大的提高,下面就如何定義並維持這樣的架構(gòu)做一個簡單地講解。

    1. 利用不同類型的工程文件來實現(xiàn)分割:
    ???做過VB的都應(yīng)該知道,常用的工程文件有FORM,MODULES,CLASS以及USERCONTROLS這四種,應(yīng)該如何去使用呢?
    ???(1) Forms(窗體)
    ??????Form是最常見的文件,利用它可以用來設(shè)計功能畫面。因此在劃分上應(yīng)該將全部與實際功能相關(guān)的CODE都放在這裏。
    ???(2) Modules(模組)
    ??????這個是純粹的代碼塊文件,由於它本身的PUBLIC特性,因此應(yīng)該是放置公用函式。這裏所說的“公用函式”並不是說裏面放的都是一些PUBLIC的FUN/SUB,而是說從功能上來講是與整個Project相關(guān)的處理,比如說DB連線,讀寫配置檔,寫LOG等。而且裏面的FUN/SUB應(yīng)該是PRIVTE與PUBLIC相互的一個結(jié)合(Private應(yīng)該是對多個Public的一個實現(xiàn)上的抽象)。
    ???(3) Class(類)
    ??????Class因為可以被單獨的NEW,因此它承擔(dān)的角色應(yīng)該是對一個單獨流程的抽象,例如將讀寫EXCEL/發(fā)MAIL設(shè)計成一個類。
    ???(4) UserControls(用戶控件)
    ??????這個東東我的理解是Class的擴(kuò)充,當(dāng)需要利用到現(xiàn)成控件進(jìn)行擴(kuò)充以及事件響應(yīng)時就用它好了。

    2.? 工程內(nèi)部分工:
    ???(1) 要養(yǎng)成從Module.Main來做工程入口/出口的習(xí)慣,避免直接將某個Form設(shè)為啟動窗體和任意地方的End。
    ??????用Module.Main做工程入口可以在固定的地方實現(xiàn)入口時的參數(shù)初始化及一及設(shè)定,避免出現(xiàn)設(shè)Form為啟動窗體後在添加對等功能塊時難於修改及初始化的問題。例如需求1先是將Form1設(shè)為啟動畫面,而後續(xù)需求要求設(shè)Form2為啟動畫面或是要將整個EXE做成無須顯示畫面直接運(yùn)行等。
    ??????在Module放置整個工程的出口(指結(jié)束時的處理Sub),能夠保證工程中引用的釋放。
    ???(2) 將全部的外部引用及定義都放在Module中。
    ??????例如VB程式中經(jīng)常會用到WindowsAPI,那麼這些API的定義應(yīng)該是放到Module之中(UserControls中用到除外)

    3.? 單獨模塊(指單一Form/Module/Class)內(nèi)結(jié)構(gòu):
    ???(1) 一定要使用Option Explicit來實施強(qiáng)制定義檢查,完全避免未定義就使用變量這種情況的發(fā)生。
    ???(2) Public的節(jié)制使用,能夠定義為Private的方法就一定不要使用Public,避免出現(xiàn)引用混亂及閱讀困難。
    ?????????
    4.? 方法內(nèi)結(jié)構(gòu):
    ???(1) 異常處理
    方法內(nèi)結(jié)構(gòu)示例
    ???可以看到上面的結(jié)構(gòu)包含了異常處理,在VB程式中最容易出現(xiàn)的問題就是異常的處理,由於VB並不會象JAVA/NET那樣要求強(qiáng)制處理異常,因此常常都會忽略掉程式中的異常處理問題,造成一旦出錯就會整個OVER的嚴(yán)重後果。
    ???(2) 不要忽視FUN的返回
    ??????VB中Function/Sub都可以一樣直接使用(例如 Call Sub1/Function1...),在這樣隨意使用Function的同時,其返回值必定會被丟棄,極容易造成程式處理的邏輯分支被忽略。
    ???(3)?Sub/Function中參數(shù)要顯式聲明ByVal /?ByRef?及參數(shù)形態(tài)
    ??????對於簡單類型的參數(shù)來講,顯式聲明ByVal /?ByRef 是表明該參數(shù)是否可以被修改,而聲明參數(shù)形態(tài)則可以從一定程度上避免VB自動轉(zhuǎn)型時的錯誤。

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     

    i am ddm

    主站蜘蛛池模板: 亚洲日本一区二区一本一道| 成年在线观看免费人视频草莓| 亚洲国产日韩成人综合天堂| 亚洲狠狠色丁香婷婷综合| 手机看黄av免费网址| 亚洲人成电影网站| 永久免费毛片在线播放 | 国产国拍精品亚洲AV片| jizz中国免费| 亚洲国产精品无码专区影院 | 国产免费观看网站| 特级一级毛片免费看| 中文字幕亚洲第一| 国产午夜无码精品免费看动漫| 自拍偷自拍亚洲精品被多人伦好爽| 一级一级一片免费高清| 亚洲av无码一区二区三区乱子伦 | 亚洲av无码不卡一区二区三区| 久久成人免费电影| 亚洲国产精品久久久久秋霞影院| 青草草色A免费观看在线| 亚洲精品自偷自拍无码| 亚洲精品国产自在久久 | 亚洲欧美日韩中文二区| 免费人成激情视频| 国产一级婬片A视频免费观看| 亚洲男人的天堂在线播放| 波多野结衣中文字幕免费视频| 亚洲AV无码一区二区三区牲色 | 51午夜精品免费视频| 亚洲国产精品国自产电影| 最近高清中文字幕无吗免费看| 亚洲精品久久无码| 亚洲人成伊人成综合网久久久 | 久久久高清日本道免费观看| 亚洲高清视频在线| 亚洲一本大道无码av天堂| 91精品免费观看| 免费一级特黄特色大片| 亚洲精品视频观看| 亚洲国产成人久久综合一区77|