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

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

JAVA規則 中級篇

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

  本文介紹的java規則的說明分為3個主要級別,中級是平時開發用的比較多的級別,在今后將陸續寫出其他的規則。遵守了這些規則可以提高程序的效率、使代碼又更好的可讀性等。
 ?。?) 在finally方法里關掉input或者output 資源
  再方法體里面定義了input或者output流的話,需要在finally里面把它關掉。
  以下這幾種調用不需要遵守這條規則,因為colse()方法不起作用:)
  java.io.StringWriter java.io.ByteArrayOutputStream java.io.ByteArrayInputStream
  假如再方法返回的時候沒有調用close()方法來釋放input()和output()的資源的話,會導致一個系統資源泄漏。而且在任何情況下都要確定在返回全調用了close() 方法,包括出現異常的時候。所以需要在finally方法里面加入這個方法。這樣就保證了在任何情況下都會關閉資源。
  錯誤示例:
  public class CIO {
  public void method (java.io.File f) {
  java.io.FileInputStream fis = null;
  try {
  fis = new java.io.FileInputStream (f);
  fis.read ();
  fis.close ();
  } catch (java.io.FileNotFoundException e1) {
  System.out.  } catch (java.io.IOException e2) {
  System.out.println("I/O Exception");
  }
  // 假如出現異常,這里就不能保證關閉資源。
  }
  }
  修正后的代碼:
  public class CIOFixed {
  public void method (java.io.File f) {
  java.io.FileInputStream fis = null;
  try {
  fis = new java.io.FileInputStream (f);
  fis.read ();
  } catch (java.io.FileNotFoundException e1) {
  System.out.println("File not found");
  } catch (java.io.IOException e2) {
  System.out.println("I/O Exception");
  } finally {
  if (fis != null) {
  try {
  fis.close ();
  } catch (java.io.IOException e) {
  System.out.println("I/O Exception");
  }
  }
  }
  }
  }
  
  (2) else的注重問題.
  一般總認為假如if語句只有一句的話,那么{}就是可要可不要的了??墒羌偃鏸f有else嵌套的話,就不一樣了,{}是必需的
  錯誤示例:
  if (i < 5)
  if (i < 2)
  i++;
  else
  i--;
  修改后:
  if (i < 5) {
  if (i < 2)
  i++;
  }
  else {
  i--;
  }
  
 ?。?) 不要再catch()塊里什么代碼也不放
  在catch()塊里面放入一些錯誤處理代碼是一個好的習慣。但是假如catch()里面有有關javadoc 的代碼,那也是可以的。
  錯誤示例:
  try {
  System.in.read ();
  } catch (java.io.IOException e) {
  // 錯誤
  }
  
  正確:
  try {
  System.in.read ();
  } catch (java.io.IOException e) {
  System.out.println("Descr
iptive error");
  }
  參考:Joshua Bloch: "Effective Java - Programming Language Guide".
  Addison-Wesley, 2001, pp. 187
  
  (4) 不要在if條件里面附值
  假如這樣做的話,系統會報告錯誤。在java的很多條件聲明里面用附值是很不明智的,而且系統也會報告錯誤。很輕易引起異常。遵守這條規者能夠使維護簡單,避免不一致。
  錯誤示例:
  if (b = true)
  正確的:
  if (b == true)
  參考:Section 10.4 of http://java.sun.com/docs/codeconv/Html/CodeConventions.doc9.html#547
  
  (5) for語句需要循環體。
  假如沒有{}的話,for語句只會執行一次!
  錯誤示例:
  for (i = 0; i < 10; i++) ;
  System.out.println (i);
  這里print() 只會執行一次。
  正確:
  for (i = 0; i < 10; i++) { // FIXED
  System.out.println (i);
  }
  
  (5) 不要把方法定義成main().
  在java里,main()方法是一個非凡的方法。所以在自己定義方法的時候不要定義這樣的名字,以免引起混擾。
  
  (6)不要直接或者間接的定義'Error'和'Throwable'的子類
  'java.lang.Error'只在JVM出現反常的時候覆蓋這個方法,假如你定義了直接或者不直接的類繼續了類'Error',也就指出了這個錯誤是JVM內部的,而不是這個類的。所以對于java編譯器來說是不可見的,這樣就不能檢查錯誤的異常處理了。
  'java.lang.Throwable'是'java.lang.Exception'和'java.lang.Error'的上級類,用戶假如象定義異常類的話應該繼續'java.lang.Exception'。
  錯誤示例:public class ABC extends Error
  正確:public class ABC extends Exception
  
  (7)有關"switch"語句里面的"case"問題
  最好在每一個 “case”里都定義一個”return”或者“break”來控制不要走到下面的 “case”里去。假如一個”case”語句在代碼的最后沒有一個”break”或者”return”句,程序就會走到下一個”case”。假如這個”case”是最后一個的話,那就沒什么問題,假如后面還有”case” 的話,看起來就不太安全了。
  錯誤示例:
  switch (i) {
  case 1:
  x = 10;
  break;
  case 2:
  x = 20;
  default:
  a = 40;
  break;
  正確:
  switch (i) {
  case 1:
  x = 10;
  break;
  case 2: // VIOLATION
  x = 20;
  break;
  default:
  x = 40;
  break;
  
 ?。?)建議不要使用'System.getenv ()'
  不建議使用'System.getenv ()',這個方法看起來很好用,不過并不是所有的系統都有環境變量的。不用這個方法也可能帶來一些不方便。
  錯誤示例:
  void method (String name) {
  System.getenv (name); // 可以用其他方法來代替
  }
  假如不用這個方法,我們可以用其它的方法來代替。比如:'System.getProperty ()’,'getTypeName ()'等,這也可以找到java的系統屬性。
  參考:David Flanagan: "Java in a Nutshell". O'Reilly
  November, 1999: Third Edition, pp.190-192
  
 ?。?)不要使用’/n’或者'/r'來分行
  這兩個標記看來很普遍,非凡是’/n’。我們經常用來作為分行用。但是不同的系統用不同的分行字符,所以這些字符在某些意義上違反了java的平臺無關性。
  錯誤示例:
  System.out.println("Hello/n" + name);
  我們可以用其它的一些方法來代替,比如println(),這個方法在不同的系統平臺上都起到相同的作用。后者推薦大家用這個方法:System.getProperty("line.separator")
  參考:David Flanagan: "Java in a Nutshell". O'Reilly,
  November 1999: Third Edition, pp. 191-192
  
  (10) 使所有的內部類"private".
  Java答應一個類包含另外一個類,帶是Java byte code沒有這個概念。類被編譯器解釋成package-private類。從更深的程度來說,包含類的任何內部私有對象能被內部類訪問的也能被同一個包內的其他類訪問。
  錯誤示例:
  public class INNER {
  class INNER_Class {
  void setValue(int i) {
  _value = i; // 現在包就可以訪問了
  }
  }
  private int _value;
  }
  所以需要加上private class INNER_Class
  參考:Statically Scanning Java Code: Finding Security Vulnerabilities.
  John Viega, Gary McGraw, Tom Mutdosch, and Edward W. Felten
  IEEE SOFTWARE September/October 2000
  
 ?。?1)不要使接口序列化
  假如一個字節數組包含了一個被序列化的對象。攻擊者就能讀到這個對象的內部狀態合字段(包括private的)。
  錯誤示例:
  public interface sample extends java.io.Serializable

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产福利精品av综合导导航| 在线成人中文字幕| 国产一区二区久久精品| 亚洲国产精品免费| 亚洲国产日韩一区| 91爱视频在线| 亚洲欧洲在线免费| 日韩经典中文字幕在线观看| 成人h视频在线| 欧美性感美女h网站在线观看免费| 久久久久久国产精品三级玉女聊斋| 国产日韩欧美在线观看| 国产一区二区丝袜| 国产不卡在线观看| 日本高清不卡在线| 成人国产在线激情| 91精品久久久久久久| 国产99久久精品一区二区| 久久视频在线播放| 欧美午夜精品在线| 国产精品老女人视频| www.亚洲一二| 亚洲精品国产suv| 国产精品海角社区在线观看| 国产91在线播放精品91| 一区二区三区视频观看| 欧美成人免费全部观看天天性色| 午夜剧场成人观在线视频免费观看| 国产精品国产三级国产专播精品人| 色一情一乱一区二区| 欧美激情一二三| 久久久久久久影院| 亚洲精品视频免费在线观看| 91色琪琪电影亚洲精品久久| 中文字幕亚洲欧美| 国模视频一区二区| 色在人av网站天堂精品| 97碰在线观看| 欧美老女人www| 久久av.com| 久久九九国产精品怡红院| www.99久久热国产日韩欧美.com| 亚洲精品黄网在线观看| 亚洲国产精品成人一区二区| 成人精品一区二区三区电影黑人| 国产精品专区第二| 日韩欧美有码在线| 亚洲free性xxxx护士hd| 国产精品综合久久久| 日韩中文综合网| 亚洲欧美日韩一区在线| 亚洲人线精品午夜| 精品中文字幕在线2019| 川上优av一区二区线观看| 久久精品国亚洲| 久久国内精品一国内精品| 久久精品小视频| 国产精品网站大全| 日本中文字幕成人| 亚洲国产又黄又爽女人高潮的| 亚洲一区二区中文字幕| 国产精品一区二区久久国产| 91精品国产高清自在线| 亚洲女人天堂视频| 宅男66日本亚洲欧美视频| 亚洲国产高清高潮精品美女| 国产精品久久久久91| 成人黄色免费片| 人人澡人人澡人人看欧美| 日韩在线观看免费av| 亚洲另类欧美自拍| www欧美日韩| 日韩免费视频在线观看| 亚洲а∨天堂久久精品喷水| 少妇精69xxtheporn| 91精品视频免费| 国产a级全部精品| 久久久久久久网站| 成人疯狂猛交xxx| 日韩中文有码在线视频| 亚洲理论片在线观看| 久久伊人精品一区二区三区| 亚洲影院污污.| 亚洲天堂日韩电影| 日韩在线小视频| 日韩高清有码在线| 亚洲一区二区在线| 亚洲福利视频久久| 日韩av毛片网| 久久久噜噜噜久久| 亚洲国产精品久久| 亚洲第一区中文字幕| 亚洲片av在线| 国产精品久久久久久中文字| 国产在线久久久| 亚洲日本成人女熟在线观看| 亚洲欧美另类国产| 97视频在线观看视频免费视频| 欧美日韩一区二区三区在线免费观看| 国产精品999| 91中文字幕在线| 精品一区二区三区电影| 欧美精品日韩www.p站| 亚洲欧美中文日韩v在线观看| 久久久久久网站| 日韩欧美一区二区三区| 欧美亚州一区二区三区| 欧美日韩亚洲激情| 亚洲欧美国产一区二区三区| 色哟哟亚洲精品一区二区| 黑人巨大精品欧美一区二区三区| 一本色道久久88精品综合| 18一19gay欧美视频网站| 91久久在线观看| 国产精品欧美日韩久久| 国产精品视频午夜| 国产欧美精品一区二区三区介绍| 国产精品欧美一区二区三区奶水| 美乳少妇欧美精品| 久久国产精品免费视频| 亚洲淫片在线视频| 成人性教育视频在线观看| 亚洲精品一区二区三区不| 九色精品美女在线| 最近2019中文字幕mv免费看| 日韩中文字幕免费视频| 红桃av永久久久| 4p变态网欧美系列| 欧美最近摘花xxxx摘花| 亚洲女人初尝黑人巨大| 国产精品吴梦梦| 久久不射电影网| 亚洲色图色老头| 欧美影院成年免费版| 在线观看国产成人av片| 清纯唯美亚洲综合| 色噜噜狠狠色综合网图区| 欧美日韩成人精品| 日韩av电影在线播放| 亚洲天堂免费观看| 一级做a爰片久久毛片美女图片| 91久久精品美女高潮| 亚洲午夜国产成人av电影男同| 亚洲视频在线播放| 91精品中国老女人| 69av在线播放| 日韩免费观看在线观看| 国产精品旅馆在线| 亚洲一区二区久久久久久| 亚洲天堂av在线免费观看| 91日韩在线视频| 午夜精品一区二区三区在线视| 亚洲精品电影网站| 中文字幕日韩欧美| 亚洲色图综合久久| 日韩精品中文字| 亚洲va欧美va国产综合久久| 欧美日韩午夜视频在线观看| 欧美亚洲第一页| 国外成人在线视频| 91久久在线播放| 国产精品普通话| 最近2019年手机中文字幕| 国产日韩精品在线播放|