国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

JBuilder 2005代碼審查功能體驗(yàn)(1)

2019-11-18 12:02:22
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  代碼審查作為JBuilder 2005強(qiáng)大的新特性閃亮登場(chǎng),直指編碼中的軟肋,力爭(zhēng)將編碼中的錯(cuò)誤或隱患扼殺于萌芽態(tài),強(qiáng)力提升開(kāi)發(fā)人員的編碼質(zhì)量。
  
  JBuilder 2005根據(jù)Sun的編碼規(guī)范及軟件開(kāi)發(fā)界總結(jié)出的一套行之有效的編碼習(xí)慣,對(duì)java開(kāi)發(fā)中的編碼風(fēng)格、聲明風(fēng)格、Javadoc文檔注釋、EJB規(guī)范、命名風(fēng)格、潛在錯(cuò)誤、編碼中的畫(huà)蛇添足等諸多方面進(jìn)行代碼審查并給出警示,以便開(kāi)發(fā)人員發(fā)現(xiàn)這些不足和隱患予以及時(shí)更正。
  
  代碼審查和語(yǔ)法錯(cuò)誤檢查是兩個(gè)不同層次的概念。語(yǔ)法錯(cuò)誤是低層次、強(qiáng)制性的檢查,任何違反語(yǔ)法的程序都是無(wú)法通過(guò)編譯的,也就是說(shuō)可運(yùn)行的程序必須是語(yǔ)法正確的。而代碼審查是高級(jí)別,非強(qiáng)制性的檢查,它對(duì)語(yǔ)法正確的程序施加了更高更嚴(yán)格的要求,從而提升程序的可讀性、降低因變量命名、方法定義、程序邏輯的不完整性等問(wèn)題而導(dǎo)致程序的潛在出錯(cuò)機(jī)率,增加程序的可維護(hù)性和健壯性。
  
  林林總總的Java編程規(guī)范、編程范式以及編程經(jīng)驗(yàn)都致力于提升代碼質(zhì)量,程序性能,軟件維護(hù)性等非語(yǔ)法方法的課題,JBuilder 2005代碼審查即是將各種行之有效的編程規(guī)范、范式、經(jīng)驗(yàn)施加于你的程序中,以使你的程序遵守這些業(yè)已被大量的實(shí)踐證實(shí)是成功的編程準(zhǔn)則。
  
  JBuilder 2005在默認(rèn)的情況下設(shè)置的代碼審查機(jī)制即是Sun的代碼編程規(guī)范,此外還提供了大量可供選擇的審查規(guī)則,你可以根據(jù)需要激活或關(guān)閉這些審查的規(guī)則。
  
  對(duì)于初學(xué)者來(lái)說(shuō),代碼審查無(wú)疑是學(xué)習(xí)和工作的良師益友,JBulder 2005通過(guò)即時(shí)的代碼審查達(dá)到了對(duì)開(kāi)發(fā)人員"監(jiān)督匡正、篤行扶弱"的作用。開(kāi)發(fā)人員也可以通過(guò)代碼審查所反饋的問(wèn)題,學(xué)習(xí)有關(guān)語(yǔ)法之外更多的編程要求和經(jīng)驗(yàn)。
  
  一、使用代碼審查
  在默認(rèn)情況下,JBuilde 2005未激活代碼審查的功能,可以通過(guò)Project->Project Properties...->Code Audits調(diào)用代碼審查的設(shè)置頁(yè)。
  
  二、代碼風(fēng)格審查
  往往有些程序員熱衷于將Java的語(yǔ)法發(fā)揮到極致,以資其對(duì)Java語(yǔ)法精通的憑據(jù)。但在需要充分協(xié)作溝通的軟件項(xiàng)目中,簡(jiǎn)潔明了,清楚易懂將會(huì)受到推崇,晦澀難懂的語(yǔ)句將會(huì)受到奚落。故大部分的軟件公司的規(guī)范都對(duì)語(yǔ)句的精簡(jiǎn)明了提出了要求。JBuilder 2005代碼審查可以在一定程度上幫助公司落實(shí)和貫徹這一要求。
  
  三、聲明審查
  成員變量和局部變量的隱藏,經(jīng)常會(huì)使開(kāi)發(fā)人員張冠李戴,犯一些不經(jīng)意的錯(cuò)誤,而子類隱藏父類的成員和靜態(tài)變量經(jīng)常是由于沒(méi)有注重到父類中已經(jīng)具有相同的名字而引起的,由此而生產(chǎn)的程序Bug由于其隱身性強(qiáng),是很難被發(fā)現(xiàn),JBuilder 2005提供幾個(gè)對(duì)聲明進(jìn)行審查的工具。
  
  四、命名風(fēng)格
  良好的命名風(fēng)格在遵守Java命名語(yǔ)法之上,對(duì)命名提出了更高的要求,良好的命名風(fēng)格必須遵守Java的命名規(guī)則
  
  五、潛在錯(cuò)誤審查
  由于流程控制語(yǔ)句語(yǔ)法的非凡性,編寫(xiě)程序時(shí)需要非凡注重,否則將會(huì)埋下禍根,JBuilder從多個(gè)方面對(duì)這些語(yǔ)句進(jìn)行審查。
  
  六、規(guī)避各種畫(huà)蛇添足
  JBuilder 2005代碼審查功能的強(qiáng)大還在于能夠判定多余的import包引入、不必要的強(qiáng)制類型轉(zhuǎn)換、無(wú)用成員、多余的接口修飾符等。
  
  七、其他
  在程序中,由于種種原因存在無(wú)效表達(dá)式,或者程序永遠(yuǎn)不能使用的程序段,對(duì)于這些無(wú)用的代碼,JBuilder 2005提供的代碼審查功能也能查出來(lái),并提醒程序員。
  
  總結(jié)
  JBuilder 2005提供了語(yǔ)法之上的代碼審查功能,使用好代碼審查功能不但可以增強(qiáng)程序代碼的簡(jiǎn)潔性、可讀性,還可以盡早發(fā)現(xiàn)潛在的編碼錯(cuò)誤,防患于未然。
  
  JBuilder 2005代碼審查功能無(wú)疑是一項(xiàng)開(kāi)創(chuàng)性的工作,將對(duì)程序開(kāi)發(fā)產(chǎn)生深遠(yuǎn)的影響,也是智能開(kāi)發(fā)工具的一個(gè)發(fā)展方向。
  
  使用Jbuilder 2005代碼審查
  
  在默認(rèn)情況下,JBuilde 2005未激活代碼審查的功能,可以通過(guò)Project->Project Properties...->Code Audits調(diào)用代碼審查的設(shè)置頁(yè),如圖1所示:
   JBuilder 2005代碼審查功能體驗(yàn)(1)(圖一)
  圖代碼審查設(shè)置
  
  勾選Code Audits設(shè)置頁(yè)中的"Enable Code Audits"激活當(dāng)前工程的代碼審查功能。Code Audits設(shè)置頁(yè)的左邊是一棵代碼審查規(guī)則項(xiàng)的樹(shù),分為兩級(jí),第一級(jí)為審查規(guī)則項(xiàng)的歸類,點(diǎn)開(kāi)第一級(jí)的節(jié)點(diǎn),第二級(jí)的各節(jié)點(diǎn)為具體的一個(gè)規(guī)則項(xiàng),可以根據(jù)需要勾選可取消這些審查的規(guī)則。
  
  點(diǎn)擊規(guī)則項(xiàng),在Code Audits設(shè)置頁(yè)的右邊顯示出了該規(guī)則的具體描述信息并提供了實(shí)例,方便開(kāi)發(fā)人員學(xué)習(xí)和理解。
  
  在激活代碼審查規(guī)則后,JBuilder 2005實(shí)時(shí)地審查編輯器中當(dāng)前編寫(xiě)的程序文件,并在違反審查規(guī)則代碼四周的控制槽上標(biāo)注,違反規(guī)則代碼的要害處將以一條粉紅色的下劃波浪線標(biāo)識(shí)出來(lái),此外在結(jié)構(gòu)窗格的Warning文件夾下列出當(dāng)前程序所有違反審查規(guī)則的代碼,如圖2所示:
  JBuilder 2005代碼審查功能體驗(yàn)(1)(圖二)
  圖結(jié)構(gòu)窗格中代碼審查結(jié)果匯總
  
  審查結(jié)果項(xiàng)描述了代碼中存在的問(wèn)題的簡(jiǎn)要描述,通過(guò)這個(gè)提示和編譯器控制槽上的 標(biāo)識(shí),點(diǎn)選審查結(jié)果項(xiàng)時(shí),編輯器中相應(yīng)的代碼內(nèi)容將以下劃虛線形式顯示,通過(guò)查看相應(yīng)的代碼,開(kāi)發(fā)人員將能夠快速發(fā)現(xiàn)問(wèn)題所在。更正問(wèn)題后,對(duì)應(yīng)的審查警告將自動(dòng)從Warning文件夾中清除。
  
  代碼風(fēng)格審查
  
  1、"switch"必須帶一個(gè)default語(yǔ)句
  
  根據(jù)Sun的編碼規(guī)范,每個(gè)switch流程控制語(yǔ)句都必須帶一個(gè)default分支,以保證邏輯分支的完整性。在默認(rèn)情況下該審查項(xiàng)未激活,對(duì)應(yīng)的設(shè)置項(xiàng)是"Coding Style" 下的"'switch' Statement Should Include a Default Case"。
  
  代碼清單 1 所有switch必須帶default分支
  
  1. switch (formatType)
  2. {
  3.  case 1:
  4.   formatStr = "yyyyMMddHHmmss";
  5.   break;
  6.  case 2:
  7.   formatStr = "yyyy'-'MM'-'dd HH:mm:ss";
  8.   break;
  9.  case 3:
  10.  formatStr = "yyyy.MM.dd HH:mm:ss";
  11.  break;
  12. case 4:
  13.  formatStr = "yyyy'年'MM'月'dd HH:mm:ss";
  14.  break;
  15. default:
  16.  formatStr = "yyyy'-'MM'-'dd HH:mm:ss";
  17. }
  
  假如沒(méi)有第15~16行的default代碼,代碼審查將給出警告。
  
  提示:
  
  可以通過(guò)Ctrl+J 調(diào)用switch代碼模板錄入的switch流程控制語(yǔ)句代碼塊將帶一個(gè)default分支,這樣,不但加速了編碼的錄入效率還保證了代碼塊的規(guī)范性。
  
  2、應(yīng)通過(guò)類名引用靜態(tài)成員
  
  類中所有的靜態(tài)方法或變量都應(yīng)該通過(guò)類名來(lái)引用,假如通過(guò)類的實(shí)例來(lái)引用這些靜態(tài)的成員將影響到程序的可讀性。假如通過(guò)類名來(lái)引用靜態(tài)變量,將輕易分辨出這些成員的靜態(tài)屬性。因?yàn)轭愳o態(tài)成員變量在JVM中僅存在一份,而非每個(gè)對(duì)象實(shí)例各自一份,因此靜態(tài)成員變量可以看成類的成員。
  
  代碼清單 2 關(guān)于靜態(tài)成員的引用
  
  1. public class ASMO1
  2. {
  3.  void func()
  4.  {
  5.   ASMO1 obj1 = new ASMO1();
  6.   ASMO2 obj2 = new ASMO2();
  7.   obj1.attr = 10; //應(yīng)更正為ASMO1.attr
  8.   obj2.attr = 20; //應(yīng)更正為ASMO2.attr
  9.   obj1.oper(); //應(yīng)更正為ASMO1. oper();
  10.   obj2.oper(); //應(yīng)更正為ASMO2. oper();
  11.  this.attr++; //應(yīng)更正為ASMO2. attr++;
  12.  this.oper(); //應(yīng)更正為ASMO2 oper();
  13. }
  14.
  15. static int attr;
  16. static void oper()
  17. {}
  18. }
  19.
  20. class ASMO2
  21. {
  22.  static int attr;
  23.  static void oper()
  24.  {}
  25. }
  
  該審查規(guī)則對(duì)應(yīng)的設(shè)置項(xiàng)是"Coding Style" 下的"accessing Static Members by the Descendant Class Name"。
  
  3、避免復(fù)雜晦澀代碼
  
  往往有些程序員熱衷于將Java的語(yǔ)法發(fā)揮到極致,以資其對(duì)Java語(yǔ)法精通的憑據(jù)。假如是為了練習(xí)語(yǔ)法、理解語(yǔ)法,無(wú)可厚非。但假如在需要充分協(xié)作溝通的軟件項(xiàng)目中,簡(jiǎn)潔明了,清楚易懂將會(huì)受到推崇,晦澀難懂的語(yǔ)句將會(huì)受到奚落。
  
  故此,大部分的軟件公司的規(guī)范都對(duì)語(yǔ)句的精簡(jiǎn)明了提出了要求。JBuilder 2005代碼審查可以在一定程度上幫助公司落實(shí)和貫徹這一要求。
  
  代碼清單3演示了晦澀的賦值語(yǔ)句及替代的寫(xiě)法:
  
  代碼清單 3 復(fù)雜晦澀的賦值語(yǔ)句
  
  1. int i = 0;
  2. int j = 0;
  3. int k = 0;
  4. int l = 0;
  5. i *= ++j;
  6. //應(yīng)更改為:
  7. //++j;
  8. //i *= j;
  9.
  10. k = j = 10;
  11. //應(yīng)更改為:
  12. //k = 10;
  13. //j = 10;
  14.
  15. l = j += 15;
  16. //應(yīng)更改為:
  17. //j += 15;
  18. //l = j;
  19.
  20. i = j++ +20;
  21. //應(yīng)更改為:
  22. //i = j + 20;
  23. //j++;
  24.
  25. i = (j = 25) + 30;
  26. //應(yīng)更改為:
  27. //j = 25;
  28. //i = j + 30;
  29.
  30. i = j++ + 20;
  31. //應(yīng)更改為:
  32. //i = j + 20;
  33. //j++;
  34.
  35. i = (j = 25) + 30;
  36. //應(yīng)更改為:
  37. //j = 2

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 灯塔市| 内江市| 宁德市| 清水县| 平利县| 竹北市| 神农架林区| 山丹县| 江都市| 赣榆县| 宜昌市| 奉化市| 哈尔滨市| 海兴县| 治县。| 图们市| 个旧市| 将乐县| 石城县| 辽宁省| 甘孜县| 准格尔旗| 革吉县| 潍坊市| 蕲春县| 丘北县| 镇康县| 新龙县| 滨州市| 北流市| 马关县| 民权县| 芷江| 赤峰市| 方山县| 靖江市| 长汀县| 哈尔滨市| 荣昌县| 长顺县| 社旗县|