天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

最佳編碼實踐:搞砸代碼的10種方法

  這是一篇提供有效、實用編程方法的程序箴言,作者Susan Harkins是世界最大的技術(shù)期刊出版社的主編,具有多年的實踐經(jīng)驗;在這篇文章里她重申“最佳編碼實踐原則”的重要性;雖然文中主要討論VB開發(fā)相關(guān)的東西,但正如作者所說,“雖然其中一部分只適用于VBA或某種IDE,但大多數(shù)都是通用的”,希望大家觸類旁通,將這些方法實踐到自己的開發(fā)工作中。

  以下是Susan的正文:

  寫代碼是一個富有創(chuàng)意但又可能讓人思想麻痹的任務(wù),不管你是否喜歡你的工作,你總會找一些捷徑,但遺憾的是,大部分捷徑都違反了最佳編碼實踐原則,這些捷徑要么會產(chǎn)生BUG,要么會導(dǎo)致數(shù)據(jù)出錯,我的建議是:在編寫VBA代碼時,不要走捷徑。下面是一些常見的錯誤觀念,導(dǎo)致人們選擇了錯誤的捷徑,雖然其中一部分只適用于VBA或某種IDE,但大多數(shù)都是通用的。

  1、我不需要else子句

  If…then…else,select case等VBA語句都包含了else子句,這個子句后跟隨了所有具體的決策條件,這是處理一些帶條件事情的最好機(jī)會,但開發(fā)人員卻忽略了這個機(jī)會,并認(rèn)為沒必要這么做。包括一個else子句并不難,并且還可以提供一層額外的錯誤捕捉機(jī)會,你可以顯示一般性錯誤,讓用戶知道預(yù)期的決定或行動不會發(fā)生,或是通過日志記錄下來,用電子郵件發(fā)送給管理員或內(nèi)部開發(fā)人員,總之想讓事件引起注意,一個未執(zhí)行的else子句比多個選擇更好。

  2、goto是一個有效的語句,我經(jīng)常使用它

  Goto是一個有效的語句,但使用不當(dāng)會產(chǎn)生難以駕馭的代碼,而且會隱藏錯誤和拙劣的程序設(shè)計,當(dāng)你不能想出一個更好的策略時,不要輕易使用goto語句,當(dāng)你真正需要一個簡單的重定向程序流時可以使用它,每次敲下goto時都問一下自己,是否有其它方法來處理這個重定向?如果有就不要使用goto(我在VBA開發(fā)中就從未使用過goto語句)。

  3、編譯器是在浪費時間

  和其它編譯器不同,VBA編譯器不會生成一個可以脫離Office獨立執(zhí)行的模塊,相反,VBA編譯器實際上是一個語法檢查器,在真實運行之前,編譯你的代碼是捕捉語法錯誤簡單有效的方法,你為什么要這么做呢?因為語法檢查器通常提供更深入的錯誤信息,因此你可以更快地解決問題。

  4、無任何錯誤需要處理

  大多數(shù)開發(fā)人員還沒有自信到自己的代碼是完美無缺的,但大多數(shù)人對錯誤處理都會掉以輕心,錯誤處理和你的設(shè)計和邏輯一樣重要,不要放棄它,相反,在處理錯誤時應(yīng)當(dāng)特別小心,一個未處理的錯誤通常意味著程序投入使用后,你會接到更多的支持電話,也許程序因這個錯誤而停止了工作,也許它導(dǎo)致了數(shù)據(jù)異常,在處理錯誤時,你可以:

  ◆ 與你的用戶分享一些信息,包括立即糾正錯誤的說明。

  ◆ 幫助程序立即從錯誤中安靜地回復(fù),用戶永遠(yuǎn)也不會知道程序曾經(jīng)發(fā)生了錯誤。

  ◆ 跟蹤錯誤,以便你進(jìn)行修復(fù)。

  5、我的用戶將輸入正確的數(shù)據(jù)

  如果程序正常運行需要依賴用戶的準(zhǔn)確輸入,這將是風(fēng)險很大的一件事,這不是對用戶能力的質(zhì)疑,用戶都不是傻子,但確保程序正常運行并不是他們的本職工作,你不能依賴他們輸入正確的數(shù)據(jù),相反,你應(yīng)該從技術(shù)上來驗證用戶的輸入,你可以使用表屬性從底層來約束和驗證,但大多數(shù)時候還是要靠你寫的代碼來驗證,這也許是程序基本功能代碼完成后最重要的任務(wù),因此不要吝嗇你的代碼,不能依靠用戶不犯錯誤的輸入,你應(yīng)該堅定地拿起驗證程序捕捉錯誤并糾正它們。

  6、認(rèn)為帶前綴或標(biāo)簽的命名約定不好

  你在創(chuàng)建一個變量時,能通過數(shù)據(jù)類型和用途識別它是最好的,大多數(shù)VBA開發(fā)人員喜歡添加3個字符的前綴,或標(biāo)簽來確定數(shù)據(jù)類型,例如,用于存儲姓氏的字符串?dāng)?shù)據(jù)類型可能命名為strLastName,前綴確定了變量的數(shù)據(jù)類型,LastName確定了變量的用途,有些開發(fā)人員認(rèn)為這個前綴是沒有必要的,甚至?xí)斐筛蓴_,因此他們不使用前綴,在某些情況下,數(shù)據(jù)類型的確是顯而易見的,但有時卻不那么明顯,添加前綴或標(biāo)簽不會增加工作量,但它的好處卻有很多,如:

  ◆ 標(biāo)簽是自文檔化(self-documenting)的。

  ◆ 在調(diào)試或修改代碼時,你可以立即知道變量的數(shù)據(jù)類型。

  ◆ 在投入生產(chǎn)幾個月后,你也許早已記不得那些變量的含義了,或者你已經(jīng)離開,后來的維護(hù)者在前綴或標(biāo)簽的提示下,能更快地讀懂代碼。

  7、不會有任何空值

  無論你采取什么措施,空值總是帶有破壞性,如果你正確地處理空值,程序?qū)€(wěn)定,VBA提供幾種工具來發(fā)現(xiàn)和處理空值。

  ◆ 使用IsNull()確定一個表達(dá)式或值是否為空,你不能對空值使用比較操作符,如var=Null或var<>Null,直接比較總是返回空(T-SQL有時會返回False)。

  ◆ 在Access中,遇到Null時,Nz()返回一個值,而不是Null。

  ◆ 如果你需要處理Null變量,請使用Var數(shù)據(jù)類型,它是唯一可以存儲Null的數(shù)據(jù)類型。

  8、我是唯一一個使用應(yīng)用程序的人,因此我在程序中嵌入了密碼

  密碼和用戶id值永遠(yuǎn)都不應(yīng)該嵌入到代碼中,你可能是唯一被授權(quán)使用該應(yīng)用程序的人,但這并不意味著就可以直接將密碼嵌入到程序中,相反,不管是誰要使用這個程序,都應(yīng)該提供一個對話框讓其輸入登錄憑據(jù)。

  9、我寫代碼時就做了測試,不用再測試了

  當(dāng)你寫代碼時就做了測試,這很好,但這樣做是不夠的,開發(fā)人員通常不適合測試自己寫的代碼,他們不會把自己想象成用戶,因此很難發(fā)現(xiàn)重大BUG,往往是走走過場罷了,要知道最終是要把程序投入生產(chǎn)環(huán)境,那時就不是你自己使用了,因此應(yīng)該找一些最終用戶來測試。

  10、就我一個人開發(fā),我只寫代碼,文檔就免了

  如果就你一個開發(fā)人員,也許你不會寫文檔,你認(rèn)為那只是耽誤自己的工作,但大多數(shù)開發(fā)人員在修改非自己寫的代碼之前,都希望有良好的文檔參考。別的不說,至少下面這些內(nèi)容應(yīng)該有文檔記錄。

  ◆ 例行的目的/任務(wù)/目標(biāo)。

  ◆ 傳遞的值和參數(shù)的簡短定義。

  ◆ 對一些非常規(guī)的代碼寫法,附上解釋和想法。

  ◆ 誰創(chuàng)建的代碼,誰在什么時候修改過代碼,修改了哪些內(nèi)容,當(dāng)你離職后,其他接收的人看到良好的注釋一定會從心底敬佩你。

it知識庫最佳編碼實踐:搞砸代碼的10種方法,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: my pico未删减在线观看 | 影音先锋av电影 | 空姐被黑人 苏晓曼 | 天天躁日日躁狠狠躁AV麻豆 | 国产一区在线观看免费 | 久久才是精品亚洲国产 | 欧美精品熟妇乱 | 国产精品99久久久久久宅男AV | 亚洲AV国产精品无码精 | 久久综合网久久综合 | 中文字幕偷乱免费视频在线 | 好紧的小嫩嫩17p | 岛国片在线免费观看 | 人人妻免费线 | 国产欧美一区二区精品性色tv | 青苹果乐园在线观看电视剧 | 日本视频一区二区免费观看 | 一个人的免费高清影院 | 男男女女爽爽爽视频免费 | 国产人妻XXXX精品HD电影 | 国产亚洲精品看片在线观看 | 在线涩涩免费观看国产精品 | 年轻的的小婊孑2中文字幕 你是淫荡的我的女王 | 欧美精品AV无码一区二区 | 真实伦 乱 | 伦理 电影在线观看 | xiao77唯美清纯 | BT7086福利二区最新 | 伊人久久大香线蕉无码麻豆 | 亚洲在线无码免费观看 | 美女撒尿无遮挡免费中国 | 久久午夜夜伦痒痒想咳嗽P 久久午夜夜伦鲁鲁片无码免费 | 亚洲免费视频在线观看 | 欧美国产精品久久久乱码 | 久久国产露脸老熟女熟69 | 夜夜精品视频一区二区 | 国产精品伦一区二区三级视频 | 日韩AV爽爽爽久久久久久 | 嫩草影院久久99 | 国产精品久久精品 | 国产三级在线观看视频 |