亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

JBuilder 2005代碼審查功能體驗(2)

2019-11-18 12:02:22
字體:
來源:轉載
供稿:網友

  命名風格
  1、取消不良命名習慣
  
  良好的命名風格在遵守java命名語法之上,對命名提出了更高的要求,良好的命名風格必須遵守以下的命名規則:
  
  1) 類或接口必須以大寫字母打頭。
  
  2) 方法、屬性、成員變量、局部變量以小寫字母打頭,且不以"_"或"$"打頭。
  
  3) 常量的所有字母都大寫。
  
  4) 異常類以Exception結尾。
  
  良好命名對應"Naming Style"下的"Naming Conventions"設置項。
  
  2、建立和國際接軌的包名
  
  包名應該用頂級域名打頭,如com,org,edu等,或者用國家代碼如cn,ru等。
  
  一般公司和組織都對包名前兩級都有嚴格的規則,如IBM公司的類以com.ibm打頭,apache以org.apache打頭,第三級才是具體的項目或產品名稱,這樣的包命名就象三維網的URL命名一樣已經成為了一種國際通用的準則。對此沒有作出嚴格規定的公司,開發負責人應該推動建立起符合這一命名規則的規范。
  
  該審查項,默認情況下沒有激活,可以通過"Naming Style"下的"Package Name"的設置項激活。
  
  3、避免用過于簡單的變量名
  
  除了循環體中的臨時變量,及一些沒有非凡意義的常見數據類型,應該盡量避免使用一個字符作為變量。那些無非凡意義且常見的數據類型,所選取的單字符變量名必須按表1進行命名:
  
  表 1 變量本身無意義的常見數據類型答應的單字符變量
  JBuilder 2005代碼審查功能體驗(2)
  此外,為了減少潛在的沖突,避免不必要的混淆,不答應以大寫域名或國家代碼作變量名。
  
  代碼清單 10 取有意義的變量名
  
  1. void method(double d)
  2. {
  3.  int i;
  4.  Exception e;
  5.  char s;//應該改為c
  6.  Object f;//應該改為o
  7.  String k;//應該改為s
  8.  Object UK;//和英國國家代碼相同,應改為其他的名字,如ukObj
  9.  Object COM;//和域名相同,應改為其他的名字,如obj_1
  10. }
  
  該審查項,在默認情況下沒有激活,可以通過"Naming Style"下的"Use Conventional Variable Names"的設置項激活。
  
  潛在錯誤審查
  1、聚焦switch
  
  由于switch流程控制語句語法的非凡性,編寫程序時需要非凡注重,否則將會埋下禍根,JBuilder從以下3個方面對switch進行審查:
  
  1) 有無對前面沒有break語句的case從句作標識:根據Sun編碼慣例,程序入口點從一個case進入,直接到達下一個case代碼段,即前一個case沒有對應的break語句時,在跨過的地方必須給出一個顯示的注釋,表示是特定流程控制的要求,而非無意遺漏。來看下面的代碼:
  
  代碼清單 11 沒有break的case從句
  
  1. switch (c) {
  2.  case '+':
  3.   ...
  4.   break;
  5.  case '-':
  6.   ...
  7.  case 'n':
  8.   ...
  9.  case ' ': case '/t':
  10.  ...
  11.  break;
  12. }
  
  假設在代碼清單11的第7行之前,是因為疏忽而遺漏了一個break語句,第9行之前是邏輯需要而故意不加break語句,則將代碼更改為:
  
  代碼清單 12 更正的switch代碼
  
  1. switch (c) {
  2.  case '+':
  3.   ...
  4.   break;
  5.  case '-':
  6.   ...
  7.   break;
  8.  case 'n':
  9.   ...
  10.  //繼續運行到下面
  11.  case ' ': case '/t':
  12.   ...
  13.   break;
  14. }
  
  該審查內容對應于"Possible Errors"下的"Break Statement is Missing before Case clause"設置項。
  
  2) 在switch中出現非case的標簽:在Java語句中有兩個標簽,即case分支標簽,另一個則是語句標簽,假如case分支標簽語句誤刪或遺漏了case要害字,則case分支標簽將變成語句標簽,而編譯器無法識別這個錯誤。
  
  代碼清單 13 case分支中缺少case而使標簽發生質變
  
  1. public class CaseLabel
  2. {
  3.  /**點*/
  4.  public static final int POINT = 1;
  5.  /**線*/
  6.  public static final int LINE = 2;
  7.  /**多邊形*/
  8.  public static final int POLYGON = 3;
  9.
  10. public String getFigureType (int kind)
  11.  {
  12.   String tempName = null;
  13.   switch (kind)
  14.   {
  15.    case POINT:
  16.     LINE://該語句缺少case,編譯器將其作為語句標簽處理,并不會發生語法錯誤
  17.     //但該方法傳入常量LINE時,將轉到default分支中,而非到達這晨,故
  18.     //應該將該行語句更改為case LINE:
  19.     tempName = "POINT and LINE";
  20.     break;
  21.    case POLYGON:
  22.     tempName = "POLYGON";
  23.     break;
  24.    default:
  25.     tempName = "UNDEFINE";
  26.   }
  27.   return tempName;
  28.  }
  29. }
  
  該審查內容對應于"Possible Errors"下的"Non-Case Label in Switch statement"設置項。
  
  3) 有錯誤嫌疑的break和continue:break和continue用于switch和循環中的跳轉控制,break用于提前結束循環以及從switch中退出,break的這種"多態性"使得在循環體中內嵌switch語句時,常會帶來一些隱患。即開發者本希望退出外層循環,結果卻只退出內層的switch語句而已。JBuilder 2005對這項內容的審查包括以下方面:
  
  switch內嵌于循環體中,且case從句中包含了不位于分支塊最后位置的break語句。
  switch內嵌于循環體中,且case從句既使用了break,又使用了continue,但兩者的效果卻是一樣的。
  break或continue語句中使用了不必要的語句標簽。
  
  請看下面的代碼:
  
  代碼清單 14有錯誤嫌疑的break和continue
  
  1. void scan(char[] arr)
  2. {
  3.  loop:
  4.  for (int i = 0; i < arr.length; i++)
  5.  {
  6.   switch (arr[i])
  7.   {
  8.    case '0':case '1':case '2':case '3':case '4':
  9.    //5~6的數字
  10.   case '5':case '6':case '7':case '8':case '9':
  11.   {
  12.    if (PRocessDigit(arr[i]))
  13.    {
  14.     continue loop; //loop語句標簽沒有必要
  15.    }
  16.    else
  17.    {
  18.     break; // 該break不會結束for循環,應該使用break loop才可結束循環
  19.    }
  20.   }
  21.   case ' ':case '/t':
  22.   {
  23.    processWhitespace(arr[i]);
  24.    continue; // 應該使用break而非continue
  25.   }
  26.   default:
  27.    processLetter(arr[i]);
  28.    break;
  29.  }
  30. }
  
  該審查內容對應于"Possible Errors"下的"Suspicious Break/Continue"設置項。
  
  2、避免對浮點值進行等值邏輯判定
  
  浮點數都是一定精度的數據,由于內部表示的誤差,往往字面上相同的兩個浮點數,其內部表示也不完全相同。故此應避免對浮點值數進行等值邏輯判定,而應采用邏輯比較判定。
  
  代碼清單 15 語句中包含浮點等值判定
  
  1. void calc(double limit)
  2. {
  3.  if (limit == 0.0)//應改為通過和較小值比較來判定,如if(Math.abs(limit) < 0.0000001)
  4.  {
  5.   System.out.println(" the float-point number is exactly 0");
  6.  }
  7. }
  
  該審查內容默認未激活可以通過"Possible Errors"下的"Suspicious Break/Continue"設置項來激活審查。
  
  3、添加()清楚化復雜的表達式
  
  寫復雜的表達式時不應過度依靠運算操作符的計算優先順序,而應養成使用"()"的好習慣,當一個邏輯表達式由多個邏輯運算組成時,應該用"()"劃分不同的部分。
  
  代碼清單 16 用括號清楚化表達式
  
  1. boolean a, b, c;
  2. ...
  3. if (a b && c) //應該替換成if ((a b) && c)
  4. {
  5. ...
  6. }
  
  該審查內容默認未激活可以通過"Possible Errors"下的"Mixing Logical Operators Without Parentheses"設置項來激活審查。
  
  4、字符串比較
  
  Java初學者一個常犯的錯誤是使用"=="或"!="對字符串進行等值邏輯判定。使用"=="將判定兩者否是指向相同的對象引用,而非判定兩者是否具有值,應該使用equals()替代。
  
  代碼清單 17 用equals()替換"=="
  
  1. public boolean equals(String s1, String s2)
  2. {
  3.  return s1 == s2; //應改為return s1.equals(s2);
  4. }
  
  該審查內容對應于"Possible Errors"下的"Use 'equals' Instead of '= ='"設置項。
  
  規避各種畫蛇添足
  1、將布爾變量和布爾值比較
  
  沒有必要將布

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久中文字幕| 久久中文字幕国产| 国产精品九九久久久久久久| 欧美日韩精品在线观看| 成人欧美一区二区三区在线湿哒哒| 亚洲激情在线观看| 日韩视频免费看| 精品久久久久久久大神国产| 91视频国产一区| 久久精品中文字幕| 国产成人综合亚洲| 91av在线播放视频| 青草青草久热精品视频在线观看| 国产精品美女久久久免费| 欧美性xxxx在线播放| 亚洲97在线观看| 日韩视频免费大全中文字幕| 精品国产欧美一区二区五十路| 欧洲亚洲免费视频| 午夜精品一区二区三区在线视| 亚洲一区亚洲二区亚洲三区| 亚洲天堂网在线观看| 欧美激情xxxxx| 91国产中文字幕| 成人午夜在线影院| 久久久视频在线| 68精品国产免费久久久久久婷婷| 亚洲成人黄色网| 国产精品男人爽免费视频1| 国产精品久久精品| 国产91精品不卡视频| 97视频免费在线观看| 欧美网站在线观看| 欧美天堂在线观看| 不卡av在线网站| 疯狂蹂躏欧美一区二区精品| 欧美亚洲日本网站| 亚洲欧美日韩中文视频| 久久精品欧美视频| 久久国产精品网站| 亚洲精品视频免费在线观看| 美女av一区二区三区| 亚洲国产精品美女| 国产91成人video| 国内精品久久久| 亚洲自拍偷拍在线| 成人久久一区二区| 8x海外华人永久免费日韩内陆视频| 日韩在线中文字| 久久久噜噜噜久久久| 中文字幕久久亚洲| 一本色道久久88精品综合| 亚洲精品一区在线观看香蕉| 欧美激情xxxx性bbbb| 亚洲色图日韩av| 国产+成+人+亚洲欧洲| 日韩电影第一页| 日韩最新中文字幕电影免费看| 欧美国产日韩一区二区三区| 国产亚洲视频中文字幕视频| 亚洲一区二区三区久久| 91国内揄拍国内精品对白| 久久精品国亚洲| 91视频免费网站| 自拍偷拍亚洲区| 亚洲精品视频在线播放| 国产精品久久久久久久天堂| 最近2019好看的中文字幕免费| 国产综合在线视频| 性欧美xxxx视频在线观看| 国产高清在线不卡| 久久精品亚洲精品| 国产精品入口免费视| 亚洲国产精品成人精品| 51视频国产精品一区二区| 国产99久久精品一区二区| 亚洲国产高清高潮精品美女| 狠狠操狠狠色综合网| 这里精品视频免费| 中文字幕av一区二区| 欧美激情视频三区| 一区二区三区四区在线观看视频| 日韩精品一二三四区| 国模精品视频一区二区三区| 久久久之久亚州精品露出| 亚洲欧美一区二区三区四区| 欧美日韩亚洲一区二区三区| 日韩av片免费在线观看| 成人免费网站在线看| 亚洲欧美成人一区二区在线电影| 国产成人亚洲精品| 日韩在线欧美在线国产在线| 国产精品嫩草视频| 成人动漫网站在线观看| 亚洲成人久久网| 97色在线视频观看| 久久琪琪电影院| 亚洲女人被黑人巨大进入| 亚洲国产小视频| 国产欧美最新羞羞视频在线观看| 免费97视频在线精品国自产拍| 日韩av在线看| 亚洲成人黄色在线观看| 亚洲精品视频在线观看视频| 国产+成+人+亚洲欧洲| 亚洲欧美制服丝袜| 国产情人节一区| 国产精品18久久久久久麻辣| 亚洲三级av在线| 欧美极度另类性三渗透| 成人精品视频99在线观看免费| 国产日韩欧美在线视频观看| 久久精品电影网| 亚洲午夜国产成人av电影男同| 亚州精品天堂中文字幕| 亚洲欧美另类中文字幕| 理论片在线不卡免费观看| 亚洲天堂免费视频| 久久国产精品久久精品| 亚洲精品999| 亚洲少妇激情视频| 国产精品日韩专区| 亚洲精品午夜精品| 不卡在线观看电视剧完整版| 日韩av电影免费观看高清| 亚洲日本aⅴ片在线观看香蕉| 日韩久久精品电影| 欧美在线免费视频| 欧美性猛交xxxx偷拍洗澡| 亚洲精品少妇网址| xxx成人少妇69| 久久视频精品在线| 中文字幕精品国产| 57pao国产精品一区| 国产成人一区三区| 欧美性猛交视频| 青青草精品毛片| 欧美午夜激情小视频| 日韩动漫免费观看电视剧高清| 久热精品在线视频| 97超级碰碰人国产在线观看| 国产精品一区二区女厕厕| 色综合久久88色综合天天看泰| 这里只有精品丝袜| 欧美夫妻性生活视频| 成人信息集中地欧美| 久久久久久久久爱| 欧美放荡办公室videos4k| 欧美日韩美女在线观看| 亚洲欧美制服丝袜| 精品国产成人在线| 日韩人体视频一二区| 国产精品2018| 岛国av一区二区三区| 国内偷自视频区视频综合| 精品视频在线播放色网色视频| 亚洲免费小视频| 欧美性极品xxxx娇小| 欧美精品精品精品精品免费| 成人午夜黄色影院| 色综合色综合网色综合| 日韩成人在线观看| 在线看国产精品| 久久影视电视剧免费网站清宫辞电视|