<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

    主站蜘蛛池模板: 暖暖免费高清日本中文| 久久免费国产视频| 成年18网站免费视频网站| 亚洲激情中文字幕| 日本免费人成视频在线观看| 亚洲春色在线视频| 久久一本岛在免费线观看2020| 久久久青草青青亚洲国产免观 | 精品亚洲视频在线| 亚洲黄色网址在线观看| 九九精品成人免费国产片| 亚洲AV无码欧洲AV无码网站| 日本免费在线观看| 亚洲免费在线视频播放| 好男人www免费高清视频在线| 狠狠色伊人亚洲综合网站色| 日韩午夜免费视频| 色吊丝免费观看网站| 久久精品国产亚洲精品| 国产精品网站在线观看免费传媒 | 免费大片黄在线观看| 国产精品亚洲精品日韩已方| 色www永久免费| 91亚洲精品视频| 免费可以在线看A∨网站| 亚洲人AV在线无码影院观看| 国产又长又粗又爽免费视频| 一二三区免费视频| 久久久无码精品亚洲日韩蜜臀浪潮| 久久国内免费视频| 国产偷国产偷亚洲高清人| 国产午夜亚洲精品理论片不卡| 亚洲精品免费在线观看| 亚洲成AV人片在WWW| 国产成人高清亚洲| 8888四色奇米在线观看免费看| 亚洲精品天堂成人片AV在线播放| 亚洲中文字幕无码一久久区| 免费视频爱爱太爽了| 亚洲变态另类一区二区三区| 亚洲国产另类久久久精品黑人 |