![VB編程規(guī)范-v1._第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-5/19/e77e74bb-7829-4e34-b6bc-68ff63efb8e7/e77e74bb-7829-4e34-b6bc-68ff63efb8e71.gif)
![VB編程規(guī)范-v1._第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-5/19/e77e74bb-7829-4e34-b6bc-68ff63efb8e7/e77e74bb-7829-4e34-b6bc-68ff63efb8e72.gif)
![VB編程規(guī)范-v1._第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-5/19/e77e74bb-7829-4e34-b6bc-68ff63efb8e7/e77e74bb-7829-4e34-b6bc-68ff63efb8e73.gif)
![VB編程規(guī)范-v1._第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-5/19/e77e74bb-7829-4e34-b6bc-68ff63efb8e7/e77e74bb-7829-4e34-b6bc-68ff63efb8e74.gif)
![VB編程規(guī)范-v1._第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-5/19/e77e74bb-7829-4e34-b6bc-68ff63efb8e7/e77e74bb-7829-4e34-b6bc-68ff63efb8e75.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、vb 編程規(guī)范 v1.0 1 vb 編程規(guī)范編程規(guī)范 vb 編程規(guī)范 v1.0 2 1. 開發(fā)人員操作規(guī)程開發(fā)人員操作規(guī)程 1.1 vb 選項(xiàng)參數(shù)的定義:選項(xiàng)參數(shù)的定義: 選項(xiàng)能數(shù)的規(guī)范有兩方面的意義:一方面是及時(shí)排除程序中存在的拼寫錯(cuò)誤、語法 錯(cuò)誤,及時(shí)保存程序的修改;另一方面是將所有開發(fā)人員的開發(fā)界面一致化,以避免開發(fā) 人員在其它開發(fā)人員的電腦上工作時(shí)因選項(xiàng)不同而造成的差錯(cuò)。 1)打開“工具”菜單,在第一頁“編輯器”中選定所有選項(xiàng),并在 tab 寬度 中輸入 4。代碼縮進(jìn)時(shí),先選中要縮進(jìn)的代碼塊,然后使用快捷鍵是 tab(右移)和 shift+tab(左移);如果手工輸入空格完成縮進(jìn),請(qǐng)以
2、 4 個(gè)空格為單位。 2)在第二頁“編輯器格式”中,不要修改任何選項(xiàng),一律使用 vb 默認(rèn)值, 否則可能在其他人操作時(shí)因界面不一致,而產(chǎn)生操作失誤。 3)在第三頁“通用”中,清除“請(qǐng)求時(shí)編譯”前的復(fù)選框(此時(shí)“后臺(tái)編譯” 選項(xiàng)會(huì)變成灰色),以確保每次程序執(zhí)行時(shí)都是全編譯執(zhí)行。 4)第四頁“可連接的”,可按自己習(xí)慣設(shè)定,建議清除所有復(fù)選框,這樣會(huì) 編輯代碼時(shí)代碼窗口可獲得最大的顯示空間。 5)第五頁“環(huán)境”中“啟動(dòng)程序時(shí)”中一定選擇“提示保存改變”(第二項(xiàng)) ,這樣每次程序被修改后再運(yùn)行時(shí),vb 都會(huì)提示保存,避免對(duì)程序的修改 因偶然因素而丟失。 6)第六頁“高級(jí)”中各選項(xiàng)由開發(fā)人員按自己習(xí)慣定
3、義,但要注意當(dāng)使用 sdi 方式進(jìn)行開發(fā)時(shí),每次在設(shè)計(jì)環(huán)境中用鼠標(biāo)拖動(dòng)窗體都會(huì)導(dǎo)致窗體的 startupposition 變?yōu)?0-手動(dòng),原來在屏幕上居中(startupposition 為 2-屏幕中心)的窗體運(yùn)行時(shí)可能會(huì)改變位置。 1.2 快捷鍵的使用快捷鍵的使用 使用快捷鍵提高操作速度。 f1 幫助 f2 顯示對(duì)象瀏覽器 f4 查看當(dāng)前選中控件的屬性窗體 f5 運(yùn)行 f7 由窗體設(shè)計(jì)切換到對(duì)應(yīng)的代碼窗體 f8 單步執(zhí)行 shift+f2 查看當(dāng)前光標(biāo)所在的變量或函數(shù)、子過程的定義 shift+f7 由代碼窗體切換到對(duì)應(yīng)的窗體設(shè)計(jì)界面 shift+f8 逐過程單步執(zhí)行 ctrl+f5 全編
4、譯執(zhí)行 vb 編程規(guī)范 v1.0 3 ctrl+f 在代碼窗體進(jìn)行查找 ctrl+g 查看立即窗體 ctrl+r 查看工程窗口 vb 編程規(guī)范 v1.0 4 2. 設(shè)計(jì)模塊和過程設(shè)計(jì)模塊和過程 2.1 建具有很強(qiáng)內(nèi)聚力的模塊建具有很強(qiáng)內(nèi)聚力的模塊 過程的重要性往往比模塊的重要性更容易理解,過程是指執(zhí)行一個(gè)統(tǒng)一函數(shù)的一段 代碼。模塊常被錯(cuò)誤的視為是一個(gè)僅僅用于存放過程的容器。有些開發(fā)人員甚至把這種思 路作了進(jìn)一步的發(fā)揮,將他們的所有過程放入單個(gè)模塊之中。 之所以不能正確的認(rèn)識(shí)模塊的功能,原因之一是模塊的實(shí)現(xiàn)實(shí)際上并不影響程序的 執(zhí)行。當(dāng)一個(gè)工程被編譯時(shí),如果所有過程都放在單個(gè)模塊中或者放在幾十個(gè)
5、模塊中,這 沒有任何關(guān)系。雖然模塊的數(shù)量對(duì)代碼的執(zhí)行并無太大的影響,但是當(dāng)創(chuàng)建便于調(diào)試和維 護(hù)的代碼時(shí),模塊的數(shù)量有時(shí)會(huì)帶來很大的影響。 模塊應(yīng)該用來將相關(guān)的過程組織在一起。 當(dāng)模塊包含一組緊密關(guān)聯(lián)的過程時(shí),該模塊可以說具有強(qiáng)大的內(nèi)聚力。當(dāng)模塊包含 許多互不相關(guān)的過程時(shí),該模塊便具有較弱的內(nèi)聚力。應(yīng)該努力創(chuàng)建內(nèi)聚力比較強(qiáng)的模塊。 大多數(shù)工程都包含許多并不十分適合與其他過程組合在一起的過程。在這種情況下, 可以為這些不合群的過程創(chuàng)建一個(gè)綜合性收容模塊。 創(chuàng)建模塊時(shí),應(yīng)知道“模塊化”這個(gè)術(shù)語的含義是什么。模塊的基本目的是創(chuàng)建相 當(dāng)獨(dú)立的程序單元。從根本上來講,模塊可以添加給另一個(gè)工程,并且可以通過
6、直接調(diào)用 它的公用過程來使用它。 2.2 創(chuàng)建松散連接和高度專用的過程創(chuàng)建松散連接和高度專用的過程 1. 使所有過程都執(zhí)行專門的任務(wù) 每個(gè)過程都應(yīng)執(zhí)行一項(xiàng)特定的任務(wù),它應(yīng)出色的完成這項(xiàng)任務(wù)。應(yīng)避免創(chuàng)建執(zhí)行 許多不同任務(wù)的過程。 創(chuàng)建專用過程有許多好處。首先調(diào)試將變得更加容易。 2. 盡量使過程成為自成一體的獨(dú)立過程 當(dāng)一個(gè)過程依賴于其他過程的調(diào)用時(shí),稱為與其他過程緊密連接的過程。緊密連 接的過程會(huì)使調(diào)試和修改變得比較困難,因?yàn)樗鼱可娴礁嗟囊蛩亍K缮⑦B接的過程優(yōu) 于緊密連接的過程,但你不可能使每個(gè)過程都成為獨(dú)立的過程。 若要使過程具備較強(qiáng)的獨(dú)立性,方法之一是盡量減少全局變量和模塊級(jí)變量。 創(chuàng)建
7、過程時(shí),設(shè)法將每個(gè)過程視為一個(gè)黑箱,其他例程不應(yīng)要求了解該過程的內(nèi) 部工作情況,該過程也不應(yīng)要求了解它外面的工程情況。這就是為什么你的過程應(yīng)依靠 參數(shù)而不應(yīng)依靠全局變量的原因。 創(chuàng)建專用過程時(shí),請(qǐng)考慮下列指導(dǎo)原則: 1)將復(fù)雜進(jìn)程放入專用過程。如果應(yīng)用程序使用復(fù)雜的數(shù)學(xué)公式,請(qǐng)考慮將每 個(gè)公式放入它自己的過程中。這樣使用這些公式的其他過程就不包含用于該 公式的實(shí)際代碼。這樣也可以更容易發(fā)現(xiàn)與公式相關(guān)的問題。 2)將數(shù)據(jù)輸入/輸出(i/o)放入專用過程。 3)將專用過程中可能要修改的代碼隔離。如果你知道某個(gè)進(jìn)程經(jīng)常變更,請(qǐng)將 這個(gè)多變的代碼放入專用過程,以便以后可以更容易的進(jìn)行修改,并減少無 意
8、中給其他進(jìn)程帶來問題的可能性。 vb 編程規(guī)范 v1.0 5 4)將業(yè)務(wù)規(guī)則封裝在專用過程中。業(yè)務(wù)規(guī)則常屬于要修改的代碼類別,應(yīng)與應(yīng) 用程序的其余部分隔開。其他過程不應(yīng)知道業(yè)務(wù)規(guī)則,只有要調(diào)用的過程才 使用這些規(guī)則。 3. 設(shè)計(jì)模塊和過程時(shí),要達(dá)到下列目的: 1)創(chuàng)建更加容易調(diào)試和維護(hù)的過程 2)創(chuàng)建具有強(qiáng)大內(nèi)聚力的模塊 3)創(chuàng)建高度專用的過程 4)創(chuàng)建松散連接的過程 5)盡量使過程具有獨(dú)立性 6)提高過程的扇入性 7)降低過程的扇出性 2.3 編程原則:編程原則: 1. 為過程和模塊賦予表義性強(qiáng)的名字 為了使代碼更加容易理解,最容易的方法之一是為你的過程賦予表義性強(qiáng)的名字。 函數(shù)名 doit
9、、getit 的可讀性很難與 calculatesalestax、 retrieveuserid 相比。 由縮寫過程名組成的代碼很難理解和維護(hù),沒有理由再這樣做了。 給過程正確的命名,可使程序工程的調(diào)試和維護(hù)工作大大的改觀。請(qǐng)認(rèn)真對(duì)待過 程命名的工作,不要為了減少鍵入操作量而降低過程的可理解度。 實(shí)際應(yīng)用舉例: 1)給過程命名時(shí)應(yīng)大小寫字母混合使用。如果句子全使用大寫字母,那么閱讀起 來就非常困難,而大小寫字母混合使用的句子,閱讀起來就很容易。 2)定義過程名時(shí)不要使用縮寫。如果你認(rèn)為應(yīng)用程序中的某些工程應(yīng)使用縮寫, 那么請(qǐng)將這些情況加上注釋,并確保每個(gè)人在所有時(shí)間內(nèi)都使用這些縮寫。決 不要在
10、某些過程中對(duì)某些單詞進(jìn)行縮寫,而在別的過程中卻不使用縮寫。 2. 為每個(gè)過程賦予單個(gè)退出點(diǎn) 3. 創(chuàng)建過程時(shí),始終都應(yīng)顯式地定義它的作用域。 1)vb 使用 public 作為默認(rèn)作用域。如果你真的想創(chuàng)建一個(gè)公用過程,請(qǐng)向代碼 閱讀者說明這一點(diǎn)。 2)通過為每個(gè)過程賦予一個(gè)明確定義的作用域,可以減少代碼閱讀者需要投入的 工作量。應(yīng)確保你為過程賦予最有意義的作用域。如果一個(gè)過程只被同一模塊 中的另一個(gè)過程調(diào)用,那么請(qǐng)將它創(chuàng)建成專用過程。如果該過程是從多個(gè)模塊 中的多個(gè)過程中調(diào)用,請(qǐng)將該說明為公用過程。 3)每個(gè)過程都應(yīng)以 public、private 或 friend 開頭。 4. 用參數(shù)在過程
11、之間傳遞數(shù)據(jù) 應(yīng)盡量避免使用模塊級(jí)變量。一般來說,變量的作用域越小越好。為了減少模塊級(jí) 變量和全局變量,方法之一是將數(shù)據(jù)作為參數(shù)在不同過程之間傳遞,而不是讓過程 共享模塊級(jí)變量或全局變量。 1)為每個(gè)參數(shù)指定數(shù)據(jù)類型。 2)根據(jù)情況傳遞 byval 或 byref。給每個(gè)參數(shù)冠以 byval 或 byref 所需要的規(guī)則 是非常重要的 3)始終要對(duì)數(shù)進(jìn)行檢驗(yàn),決不要假設(shè)你得數(shù)據(jù)沒有問題。程序員常犯的一個(gè)錯(cuò)誤 是在編寫過程時(shí)假設(shè)數(shù)據(jù)沒有問題。在初始編程階段,當(dāng)編寫調(diào)用過程時(shí),這 vb 編程規(guī)范 v1.0 6 樣的假設(shè)并無大礙。這時(shí)你完全能夠知道什么是參數(shù)的許可值,并按要求提供 這些值。但如果你不
12、對(duì)參數(shù)的數(shù)據(jù)進(jìn)行檢驗(yàn),那么下列情況就會(huì)給你帶來很大 麻煩:另外某個(gè)人創(chuàng)建了一個(gè)調(diào)用過程,但此人不知道允許的值;你在晚些時(shí) 候添加了新的調(diào)用過程,并錯(cuò)誤的傳遞了壞數(shù)據(jù)。 4)當(dāng)參數(shù)只接受較小的一組值時(shí),請(qǐng)使用枚舉值。使用枚舉值,可降低編碼時(shí)出 現(xiàn)數(shù)據(jù)輸入錯(cuò)誤的可能性。只要有可能,就可考慮使用枚舉值。 vb 編程規(guī)范 v1.0 7 3. 命名約定命名約定 所有變量的定義應(yīng)該遵循匈牙利命名法,它使用 3 字符前綴來表示數(shù)據(jù)類型和控件類型, 3 個(gè)字符的前綴必須小寫,前綴后面是由表意性強(qiáng)的一個(gè)單詞或多個(gè)單詞組成的名字,而 且每個(gè)單詞的首寫字母大寫,其它字母小寫,這樣保證了對(duì)變量名能夠進(jìn)行正確的斷句。
13、這樣,在一個(gè)變量名就可以反映出變量類型和變量所存儲(chǔ)的值的意義兩方面內(nèi)容,這使 得代碼語句可讀性強(qiáng)、更加容易理解。 3.1 變量類型前綴列表:變量類型前綴列表: 數(shù)據(jù)類型數(shù)據(jù)類型前綴前綴示例示例 booleanblnblnloggedin currencycurcursalary controlctlctllastcontrol doubledbldblmiles errobjecterrerrlasterror singlesngsngyears handlehwndhwndpicture longlnglngonhand objectobjobjusertable integerintint
14、age stringstrstrname user-defined typeudtudtemployee variant (including dates)vntvntdatehired arrayaastremployees 3.2 控件類型前綴列表:控件類型前綴列表: 控件控件前綴前綴舉例舉例 checkchkchkprint vb 編程規(guī)范 v1.0 8 combocbocbotitle commandcmdcmdcancel datadatdatbiblio directory list boxdirdirsource drive list boxdrvdrvtarget file l
15、ist boxfilfilsource framefrafralanguage formfrmfrmmain group push buttongpbgpbchannel horizontal scroll barhsbhsbvolume imageimgimgicon labellbllblhelpmessage linelinlinvertical list boxlstlstresultcodes mdi child formmdimdicontact menumnumnufileopen ole containeroleolephoto option buttonoptoptspani
16、sh panelpnlpnlsettings picture boxpicpicdiskspace picture clipclpclptoolbar shapeshpshpcircle text boxtxttxtaddress timertmrtmralarm vertical scroll barvsbvsbrate 3.3 結(jié)構(gòu)結(jié)構(gòu) vb 編程規(guī)范 v1.0 9 當(dāng)用戶定義 udt(即用戶自定義結(jié)構(gòu),type 結(jié)構(gòu))時(shí),它應(yīng)加上前綴“type”, 以示與其它類型的區(qū)別。 3.4 3.4 其它其它 開發(fā)人員如果遇到上述表格中未列舉的類型,請(qǐng)書面通知相關(guān)管理人員,由管理人 員集中更新列表內(nèi)
17、容,不得擅自啟用未經(jīng)確定的新變量或控件前綴。 vb 編程規(guī)范 v1.0 10 4. 使用常量和枚舉值使用常量和枚舉值 4.1 使用常量使用常量 1) 常數(shù)很容易在數(shù)據(jù)輸入時(shí)出錯(cuò) 常數(shù)存在的主要問題之一是你很容易在鍵入數(shù)字時(shí)出錯(cuò),從而顛倒了數(shù)字的位 置。例如,當(dāng)你鍵入數(shù)字 10876 時(shí),很容易的鍵入 10867 或 18076。與處理變量和保留 字的方法不同,vb 的編譯器并不在乎顛倒了位置和不正確的數(shù)字,有時(shí)簡單的錯(cuò)誤造 成的問題不會(huì)立即表現(xiàn)出來,而當(dāng)問題表現(xiàn)出來時(shí),它們會(huì)以隨機(jī)的計(jì)算錯(cuò)誤的形式 出現(xiàn),這些錯(cuò)誤很難準(zhǔn)確定位。用常量來取代常數(shù)時(shí),vb 將在編譯時(shí)檢查常量的有效 性。如果常量不存
18、在,vb 便將這一情況通知你,并拒絕進(jìn)行編譯,這可以消除錯(cuò)誤鍵 入的數(shù)字帶來的問題,只要常量擁有正確的值,使用該常量的所有代碼也有使用該正 確值。 2) 常數(shù)很難不斷更新 3) 常量使代碼更容易閱讀 使用常量后,得到的一個(gè)額外好處是可使創(chuàng)建的代碼更容易閱讀。常數(shù)很不直 觀。也許你對(duì)常數(shù)非常了解,但其他人則根本看不明白。通過合理的給常量命名,使 用這些常量的代碼就變得比較直觀了,更容易閱讀。 為常量賦予較寬的作用域,這與使用變量時(shí)的情況不同。在一個(gè)應(yīng)用程序中你 決不應(yīng)該兩次創(chuàng)建相同的常量。如果你發(fā)現(xiàn)自己復(fù)制了一個(gè)常量,請(qǐng)將原始的常量說 明轉(zhuǎn)至較寬的作用域,直到該常量可供引用它的所有過程為止。 4
19、.2 使用枚舉值使用枚舉值 你不必記住參數(shù)的數(shù)值,錯(cuò)誤地設(shè)定值的可能性也大大減少了。雖然你仍可為參數(shù)設(shè) 定數(shù)值,而不是設(shè)定枚舉成員的名字,但你決不應(yīng)該這樣去做。 1)枚舉值的所有成員都是長整型數(shù),你不得使用其他數(shù)據(jù)類型。 2)使用常量和枚舉值的目的: 減少數(shù)字換位和鍵入錯(cuò)誤帶來的代碼錯(cuò)誤; 將來可以更容易更改各個(gè)值; 使代碼更容易閱讀。 4.3 編程原則編程原則 常量不同于變量的另一個(gè)標(biāo)識(shí)特征是不使用數(shù)據(jù)類型前綴。 有些外部數(shù)據(jù)庫仍然使用大寫字母常量。例如,如果用 api 瀏覽器查找和拷貝與 api 相關(guān)的常量,你??煽吹剿鼈兪鞘褂么髮懽帜傅某A?。在這種情況下,請(qǐng)將這些常量保持 原狀,以便達(dá)成
20、應(yīng)用程序之間的一致性。 1)將應(yīng)用程序前綴或特定的前綴用于枚舉成員 i.不必用前綴來表示枚舉成員的類型,因?yàn)樗谐蓡T總是屬于長整型數(shù)。但應(yīng) 該使用專門的前綴來表示它的值來自應(yīng)用程序或組件。 ii.應(yīng)該用一個(gè)指示符作為枚舉成員的前綴,因?yàn)楫?dāng) vb 遇到一個(gè)枚舉成員名時(shí), 如果其他被引用的類型庫中包含相同的名字,它就會(huì)搞混。 2)若要了解鍵入的系統(tǒng)常量是否正確,方法之一是全部用小寫字母鍵入該常量。如果該 常量有效,vb 就會(huì)將它轉(zhuǎn)換成正確的大小寫字母。如果該常量仍然保持全部為小寫字 vb 編程規(guī)范 v1.0 11 母,就表示鍵入的名字不正確,必須進(jìn)行糾正。 3)當(dāng)參數(shù)接受有限數(shù)量的值時(shí),請(qǐng)使用枚舉
21、 4)使用 select case 結(jié)構(gòu)時(shí),始終要加上一個(gè) else 子句,以便處理傳遞給過程的有效值。 vb 編程規(guī)范 v1.0 12 5. 變量變量 5.1 定義有焦點(diǎn)的變量定義有焦點(diǎn)的變量 用于多個(gè)目的的變量稱為無焦點(diǎn)(多焦點(diǎn))的變量。無焦點(diǎn)變量所代表的意義與程 序的執(zhí)行流程有關(guān),當(dāng)程序處于不同位置時(shí),它所表示的意義是不固定的,這樣就給程序 的可讀性和可維護(hù)性帶來了麻煩。 比如:定義一個(gè)名為 rs 的 recordset 變量,先用這個(gè)變量取得了醫(yī)院員工數(shù)據(jù), 之后又用同一個(gè)變量名取得了住院病人數(shù)據(jù),那么單獨(dú)抽取出一句使用了變量 rs 的語句, 如果只憑這一句、不從頭讀起的話,很知道這句
22、話究竟使用的是哪個(gè)表的數(shù)據(jù)。這給程序 的維護(hù)帶來了不必要的麻煩。 5.2 只對(duì)常用變量名和長變量名進(jìn)行縮寫只對(duì)常用變量名和長變量名進(jìn)行縮寫 如果需要對(duì)變量名進(jìn)行縮寫時(shí),一定要注意整個(gè)代碼中縮寫規(guī)則的一致性。例如, 如果在代碼的某些區(qū)域中使用 cnt,而在另一些區(qū)域中又使用 count,就會(huì)給代碼增加不必 要的復(fù)雜性。 變量名中盡量不要出現(xiàn)縮寫。 5.3 使用統(tǒng)一的量詞使用統(tǒng)一的量詞 通過在結(jié)尾處放置一個(gè)量詞,就可創(chuàng)建更加統(tǒng)一的變量,它們更容易理解,也更容 易搜索。例如,請(qǐng)使用 strcustomerfirst 和 strcustomerlast,而不要使用 strfirstcustomer 和
23、 strlastcustomer。 量詞列表: 量詞后綴量詞后綴說明說明 first 一組變量中的第一個(gè) last 一組變量中的最后一個(gè) next 一組變量中的下一個(gè)變量 prev 一組變量中的上一個(gè) cur 一組變量中的當(dāng)前變量 5.4 使用肯定形式的布爾變量使用肯定形式的布爾變量 給布爾變量命名時(shí),始終都要使用變量的肯定形式,以減少其它開發(fā)人員在理解布 爾變量所代表的意義時(shí)的難度。 5.5 為每個(gè)變量選擇最佳的數(shù)據(jù)類型為每個(gè)變量選擇最佳的數(shù)據(jù)類型 這樣即能減少對(duì)內(nèi)存的需求量,加快代碼的執(zhí)行速度,又會(huì)降低出錯(cuò)的可能性。用 于變量的數(shù)據(jù)類型可能會(huì)影響該變量進(jìn)行計(jì)算所產(chǎn)生的結(jié)果。在這種情況下,v
24、b 不會(huì)產(chǎn)生 運(yùn)行期錯(cuò)誤,它只是迫使該值符合數(shù)據(jù)類型的要求。這類問題極難查找。 例如:對(duì)可能會(huì)出現(xiàn)浮點(diǎn)數(shù)的變量,定義為整形或長整形會(huì)導(dǎo)致 vb 在運(yùn)算時(shí)將該 變量的值自動(dòng)取整,這種 vb 自動(dòng)進(jìn)行、隱式的的操作會(huì)增大程序排錯(cuò)時(shí)的難度。 vb 編程規(guī)范 v1.0 13 5.6 只有在絕對(duì)必要時(shí)才使用只有在絕對(duì)必要時(shí)才使用 variant 數(shù)據(jù)類型數(shù)據(jù)類型 variant 還存在其他缺陷。它們占用的內(nèi)存比 vb 的任何其他數(shù)據(jù)類型都要多,而 且對(duì) variant 中的數(shù)據(jù)進(jìn)行操作時(shí)的速度幾乎總是比對(duì)其他數(shù)據(jù)類型進(jìn)行操作的速度要慢, 另外變體類型還可能導(dǎo)致 vb 在程序運(yùn)行過程中對(duì)數(shù)據(jù)類型進(jìn)行自動(dòng)轉(zhuǎn)
25、換。 只有在確實(shí)不能預(yù)料變量的類型時(shí)才能使用 variant。 注意:當(dāng)你使用單個(gè) astype子句在同一個(gè)代碼行上說明多個(gè)變量時(shí),只有 dim 語句中的最后一個(gè)變量被賦予特定數(shù)據(jù)類型。所有其他變量均被賦予 variant 數(shù)據(jù)類型。 5.7 盡量縮小變量的作用域盡量縮小變量的作用域 如果變量的作用域大于它應(yīng)有的范圍,變量可繼續(xù)存在,并且在不再需要該變量后 的很長時(shí)間內(nèi)仍然占用資源。 它們的主要問題是,任何模塊中的任何過程都能對(duì)它們進(jìn)行修改,并且很難跟蹤究 竟是何處進(jìn)行修改的。 占用資源是作用域涉及的一個(gè)重要問題。如果創(chuàng)建全局的 recordset(記錄集)變 量,問題會(huì)復(fù)雜。對(duì)于 recor
26、dset 對(duì)變量來說,盡量縮小作用域?qū)?huì)對(duì)應(yīng)用程序的可靠性產(chǎn)生巨大的影響。 5.8 使用使用“ 2) 確指出該代碼的編寫思路和邏輯方法; 3) 人們注意到代碼中的重要轉(zhuǎn)折點(diǎn); 4)使代碼的閱讀者不必在他們的頭腦中仿真運(yùn)行代碼的執(zhí)行過程. 7.2 編程原則: 1. 用文字說明代碼的作用: 簡單的重復(fù)代碼做寫什么,這樣的注釋幾乎不能給注釋增加什么信息.如果你使用好 的命名方法來創(chuàng)建直觀明了的代碼那么這些類型的注釋絕對(duì)增加不了什么信息. 2. 如果你想違背好的編程原則,請(qǐng)說明為什么 有的時(shí)候你可能需要違背好的編程原則,或者使用了某些不正規(guī)的方法,.遇到這 種情況時(shí),請(qǐng)用內(nèi)部注釋來說明你在做什么和為什
27、么要這樣做。 技巧性特別高的代碼段,一定要加詳細(xì)的注釋,不要讓其他開發(fā)人員花很長時(shí)間來 研究一個(gè)高技巧但不易理解的程序段。 3. 用注釋來說明何時(shí)可能出錯(cuò)和為什么出錯(cuò) 4. 在編寫代碼前進(jìn)行注釋 給代碼加注釋的方法之一是在編寫一個(gè)過程前首先寫上注釋.如果你愿意,可以編寫 完整句子的注釋或偽代碼.一旦你用注釋對(duì)代碼進(jìn)行了概述,就可以在注釋之間編寫代碼. 5. 在要注釋的代碼前書寫注釋 注釋一定出現(xiàn)在要注釋的程序段前,不要在某段程序后書寫對(duì)這段程序的注釋,先 看到注釋對(duì)程序的理解會(huì)有一定幫助。 如果有可能,請(qǐng)?jiān)谧⑨屝信c上面代碼間加一空行。 6. 純色字符注釋行只用于主要注釋 注釋中要分隔時(shí),請(qǐng)使用
28、一行空注釋行來完成,不要使用純色字符,以保持版面的 整潔、清晰。 7. 避免形成注釋框 用星號(hào)圍成的注釋框,右邊的星號(hào)看起來很好,但它們給注釋增加了任何信息嗎?實(shí) 際上這會(huì)給編寫或編輯注釋的人增加許多工作。 8. 使用撇號(hào)來指明注釋 不要使用 rem 語句來注釋。 9. 增強(qiáng)注釋的可讀性 注釋是供人閱讀的,而不是讓計(jì)算機(jī)閱讀的。 1)使用完整的語句。雖然不必將注釋分成段落(最好也不要分成段落),但你應(yīng) 盡量將注釋寫成完整的句子。 2)避免使用縮寫。縮寫常使注釋更難閱讀,人們常用不同的方法對(duì)相同的單詞進(jìn) 行縮寫,這會(huì)造成許多混亂,如果必須對(duì)詞匯縮寫,必須做到統(tǒng)一。 3)將整個(gè)單詞大寫,以突出它們
29、的重要性。若要使人們注意注釋中的一個(gè)或多個(gè) 單詞,請(qǐng)全部使用大寫字母。 10. 對(duì)注釋進(jìn)行縮進(jìn),使之與后隨的語句對(duì)齊。 vb 編程規(guī)范 v1.0 17 注釋通常位于它們要說明的代碼的前面。為了從視覺上突出注釋與它的代碼之間 的關(guān)系,請(qǐng)將注釋縮進(jìn),使之與代碼處于同一個(gè)層次上。 11. 為每個(gè)過程賦予一個(gè)注釋標(biāo)頭 每個(gè)過程都應(yīng)有一個(gè)注釋標(biāo)頭。過程的注釋標(biāo)頭可包含多個(gè)文字項(xiàng),比如輸入?yún)?數(shù)、返回值、原始作者、最后編輯該過程的程序員、上次修改日期、版權(quán)信息。 12. 當(dāng)行尾注釋用在上面這種代碼段結(jié)構(gòu)中時(shí),它們會(huì)使代碼更難閱讀。 使用多個(gè)行尾注釋時(shí)(比如用于過程頂部的多個(gè)變量說明),應(yīng)使它們互相對(duì)齊。
30、這可使它們稍容易閱讀一些。 13. 何時(shí)書寫注釋 1)請(qǐng)?jiān)诿總€(gè) if 語句的前面加上注釋。 2)在每個(gè) select case 語句的前面加上注釋。與 if 語句一樣,select case 語 句用于評(píng)估對(duì)程序執(zhí)行產(chǎn)生影響的表達(dá)式。 3)在每個(gè)循環(huán)(包括 fornext 循環(huán)和 do 循環(huán))的前面加上注釋。每個(gè)循環(huán)都 有它的作用,許多情況下這個(gè)作用不清楚直觀。 4)在修改了全局變量的每個(gè)語句前面加上注釋。全局變量很討厭。但如果非常需 要使用全局變量,請(qǐng)說明你為何要修改它。這將使代碼的調(diào)試容易一些。 vb 編程規(guī)范 v1.0 18 8. 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu) 1. 循環(huán)結(jié)束后不要引用計(jì)數(shù)器變量。當(dāng)
31、 fornext 循環(huán)結(jié)束時(shí),計(jì)數(shù)器變量的最后值不 等于 end 的值,它大于或小于 step 的值。 2. 所有 next 語句均應(yīng)包含計(jì)數(shù)器變量。如果你在 next 語句中省略了計(jì)數(shù)器變量,代碼 仍可執(zhí)行,但它的可讀性要差一些,因此更難維護(hù). 3. 為了清楚起見,應(yīng)對(duì) fornext 循環(huán)中的代碼主體語句進(jìn)行縮進(jìn)。每當(dāng)你的代碼結(jié)構(gòu) 擁有一個(gè)開始語句和結(jié)束語句時(shí),就必須對(duì)代碼主體語句進(jìn)行縮進(jìn)。 4. 如果你必須提早退出 fornext 循環(huán),請(qǐng)使用 exit for 語句。不要使用 goto 和一個(gè) 標(biāo)注來退出循環(huán)。 5. 請(qǐng)?jiān)谘h(huán)的開始處計(jì) do 循環(huán)的退出條件。你??蛇x擇究竟在循環(huán)的開始
32、處還是結(jié)尾 處放置退出條件。但在循環(huán)的開始處計(jì)算退出條件,這樣的循環(huán)比較容易理解。 6. 當(dāng)你在 while 和 until 之間進(jìn)行選擇時(shí),請(qǐng)使用能實(shí)現(xiàn)最簡單的條件的這個(gè)關(guān)鍵字。 7. 為了保持代碼見格的一致性,盡可能使用 while 子句來完成 do.loop 循環(huán)。 vb 編程規(guī)范 v1.0 19 9. 控制代碼流控制代碼流 9.1 控制代碼流的目的:控制代碼流的目的: 1)在規(guī)定的情況下使用正確的判斷構(gòu)造; 2)降低代碼的復(fù)雜性,使之更容易閱讀和調(diào)試; 3)最大限度的減少表達(dá)式計(jì)算中出錯(cuò)的機(jī)會(huì)。 9.2 編程原則:編程原則: 1. 當(dāng)根據(jù)一個(gè)條件是 true 還是 false 來做出判
33、斷時(shí),使用 ifthenelse 即使只有一個(gè)語句被執(zhí)行,也應(yīng)考慮使用 end if 構(gòu)造。當(dāng) condition 的計(jì)算結(jié) 果是 true 時(shí),如果只有一個(gè)語句被執(zhí)行,該語句可以與 if 放在同一行上,并且 end if 可以省略。但若要使代碼更便于閱讀,請(qǐng)將該語句單獨(dú)放在一行上,并以 end if 作為該 構(gòu)造的結(jié)束。 2. 對(duì)非布爾表達(dá)式與各種可能的值進(jìn)行比較時(shí),使用 select case 語句. select case 可以用許多高檔次的方式來使用,比如將多個(gè)結(jié)果值放在一個(gè) case 行上。 這些條件互相之間可能毫不相關(guān)。這與 select case 結(jié)構(gòu)完全相反。在 select
34、case 結(jié)構(gòu)中,通過對(duì)一個(gè)(通常是非布爾)測試表達(dá)式與 case 語句中的每個(gè)表達(dá)式進(jìn) 行比較,從而構(gòu)成了各個(gè)條件。 1)即使不需要,也應(yīng)在每個(gè) select case 構(gòu)造中包含 case else 語句。如果始終 都加上 case else 子句,代碼將更加清楚明了,就不會(huì)迫使其他編程人員去猜 測為什么要處理 case 語句中的沒有特殊理由的結(jié)果。 2)所有 case 語句都應(yīng)使用便于理解的順序。 不能出現(xiàn)條件范圍大的 case 子句出現(xiàn)在前面情況。 如:select case lngage case is 17 case is 13 . end select 這樣的結(jié)構(gòu)導(dǎo)致第二個(gè) ca
35、se 子句不能被執(zhí)行,從而產(chǎn)生邏 輯上的錯(cuò)誤。 3)不要編寫決不會(huì)產(chǎn)生 true 結(jié)果的 case 語句。 3. 對(duì)表達(dá)式進(jìn)行格式化 對(duì)表達(dá)式進(jìn)行正確的格式化可以減少代碼出錯(cuò)的可能性,增加代碼的可讀性。 1) 要將布爾表達(dá)式與 true 或 false 相比較。 如: 錯(cuò)誤:if rsemployees.eof = true then vb 編程規(guī)范 v1.0 20 正確:if rsemployees.eof then 布爾表達(dá)式與 true 或 false 相比較在 select case 子句中更容易 產(chǎn)生錯(cuò)誤。 2) 建的布爾變量名應(yīng)反映肯定的條件而不是否定的條件。使過程變得過分復(fù)雜的一個(gè) 典型例子是創(chuàng)建一個(gè)反映否定條件的布爾變量名。根據(jù)這種變量進(jìn)行判斷,就會(huì)使 代碼變得更加復(fù)雜。代碼就增加了出錯(cuò)的可能性。 3) 了清楚起見,用括號(hào)將表達(dá)式括起來。即使不要求,也要使用括號(hào)。不要書寫復(fù)雜 的依靠運(yùn)算符優(yōu)先級(jí)來執(zhí)行的表達(dá)式,在必要的位置使用括號(hào)強(qiáng)調(diào)其運(yùn)算優(yōu)先級(jí)。 4)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國自動(dòng)碼坯系統(tǒng)數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025至2030年中國手指燈數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025至2030年中國不銹鋼活接口數(shù)據(jù)監(jiān)測研究報(bào)告
- 二零二五年度大型購物中心商場場地租賃合同范本6篇
- 2025年度建筑工程合同索賠爭議解決與協(xié)商技巧3篇
- 2025-2030年地質(zhì)勘察成本控制軟件企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報(bào)告
- 2025-2030年啤酒主題餐廳企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報(bào)告
- 摩托車多功能顯示屏操作與維護(hù)考核試卷
- 2025-2030年抗結(jié)劑行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 2025-2030年戶外多功能鏟子企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報(bào)告
- 2025年初級(jí)社會(huì)工作者綜合能力全國考試題庫(含答案)
- 兩淮礦區(qū)地面定向多分支水平井鉆進(jìn)作業(yè)技術(shù)規(guī)程
- vc約起來史上最全180個(gè)知名投資人聯(lián)系方式
- 中國酒文化英文介紹
- 社會(huì)穩(wěn)定風(fēng)險(xiǎn)評(píng)估報(bào)告風(fēng)險(xiǎn)評(píng)估參考
- GB/T 14343-2008化學(xué)纖維長絲線密度試驗(yàn)方法
- 制冷操作證培訓(xùn)教材-制冷與空調(diào)設(shè)備運(yùn)行操作作業(yè)培課件
- 市級(jí)臨床重點(diǎn)??粕陥?bào)書
- 中交與機(jī)械竣工區(qū)別
- 《醫(yī)院重點(diǎn)專科建設(shè)專項(xiàng)資金管理辦法》
- 第三章:王實(shí)甫與《西廂記》PPT課件(完整版)
評(píng)論
0/150
提交評(píng)論