麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

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

Java 程序編碼規范與技巧

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

  java 程序編碼規范
  命名規范
  定義這個規范的目的是讓項目中所有的文檔都看起來像一個人寫的,增加可讀性,減少項目組中因為換人而帶來的損失。(這些規范并不是一定要絕對遵守,但是一定要讓程序有良好的可讀性)
  Package 的命名
   Package 的名字應該都是由一個小寫單詞組成。
  Class 的命名
  Class 的名字必須由大寫字母開頭而其他字母都小寫的單詞組成 Class
  變量的命名
  變量的名字必須用一個小寫字母開頭。后面的單詞用大寫字母開頭。
  Static Final 變量的命名
  Static Final 變量的名字應該都大寫,并且指出完整含義。
  參數的命名
  參數的名字必須和變量的命名規范一致。
  數組的命名
  數組應該總是用下面的方式來命名:
  byte[] buffer;
  而不是: byte buffer[];
  方法的參數
  使用有意義的參數命名,假如可能的話,使用和要賦值的字段一樣的名字:
  SetCounter(int size){
  this.size = size;
  }
  Java 文件樣式
  所有的 Java(*.java) 文件都必須遵守如下的樣式規則
  版權信息
  版權信息必須在 java 文件的開頭,比如:
  /** * Copyright ? 2000 Shanghai XXX Co. Ltd.
  * All right reserved.
  */
  其他不需要出現在 javadoc 的信息也可以包含在這里。
  Package/Imports package 行要在 import 行之前,
  import 中標準的包名要在本地的包名之前,而且按照字母順序排列。
  假如 import 行中包含了同一個包中的不同子目錄,則應該用 * 來處理。
  package hotlava.net.stats;
  import java.io.*;
  import java.util.Observable;
  import hotlava.util.application;
  這里 java.io.* 使用來代替InputStream and OutputStream 的。
  Class 接下來的是類的注釋,一般是用來解釋類的。
  /** * A class rePResenting a set of packet and byte counters
  * It is observable to allow it to be watched, but only
  * reports changes when the current set is complete
  */
  接下來是類定義,包含了在不同的行的 extends 和 implements public class
  CounterSet extends Observable
  implements Cloneable Class Fields
  接下來是類的成員變量:
  /** * Packet counter
  */
  protected int[] packets;
  public 的成員變量必須生成文檔(JavaDoc)。
  proceted、private和 package 定義的成員變量假如名字含義明確的話,可以沒有注釋。
  存取方法
  接下來是類變量的存取的方法。它只是簡單的用來將類的變量賦值獲取值的話 ,可以簡單的寫在一行上。
  /** * Get the counters
  * @return an array containing the statistical data. This array has been
  * freshly allocated and can be modified by the caller.
  */
  public int[] getPackets() { return copyArray(packets, offset); }
  public int[] getBytes() { return copyArray(bytes, offset); }
  public int[] getPackets() { return packets; }
  public void setPackets(int[] packets) { this.packets = packets; }
  其它的方法不要寫在一行上
  構造函數
  接下來是構造函數,它應該用遞增的方式寫(比如:參數多的寫在后面)。
  訪問類型 ("public", "private" 等.) 和 任何 "static", "final" 或 "synchronized" ?
  該在一行中 ,并且方法和參數另寫一行,這樣可以使方法和參數更易讀。
  public CounterSet(int size){
  this.size = size;
  }
  克隆方法
  假如這個類是可以被克隆的,那么下一步就是 clone 方法:
  public Object clone() {
  try { CounterSet obj = (CounterSet)super.clone();
  obj.packets = (int[])packets.clone();
  obj.size = size; return obj;
  }catch(CloneNotSupportedException e) {
  throw new InternalError("UneXPected CloneNotSUpportedException: "
  + e.getMessage());
  }
  }
  類方法
  下面開始寫類的方法:
  /** * Set the packet counters
  * (sUCh as when restoring from a database)
  */
  protected final void setArray(int[] r1, int[] r2, int[] r3, int[] r4)
  throws IllegalArgumentException { // // Ensure the arrays are of equal size
  // if (r1.length != r2.length r1.length != r3.length
  // r1.length != r4.length)
  throw new IllegalArgumentException("Arrays must be of the same size");
  System.arraycopy(r1, 0, r3, 0, r1.length);
  System.arraycopy(r2, 0, r4, 0, r1.length);
  }
  toString 方法無論如何,每一個類都應該定義 toString 方法:
  public String toString() {
  String retval = "CounterSet: ";
  for (int i = 0; i < data.length(); i++) {
  retval += data.bytes.toString();
  retval += data.packets.toString();
  }
  return retval;
  }
  }
  main 方法
  假如main(String[]) 方法已經定義了, 那么它應該寫在類的底部.
  代碼編寫格式
  代碼樣式
  代碼應該用 unix 的格式,而不是 windows 的(比如:回車變成回車+換行)
  文檔化
  必須用 javadoc 來為類生成文檔。不僅因為它是標準,這也是被各種 java 編譯器都認可的方法。使用 @author 標記是不被推薦的,因為代碼不應該是被個人擁有的。
  縮進
  縮進應該是每行2個空格. 不要在源文件中保存Tab字符.
  在使用不同的源代碼治理工具時Tab字符將因為用戶設置的不同而擴展為不同的寬度.
  假如你使用 UltrEdit 作為你的 Java 源代碼編輯器的話,
  你可以通過如下操作來禁止保存Tab字符,
  方法是通過 UltrEdit中先設定 Tab 使用的長度室2個空格,
  然后用 FormatTabs to Spaces 菜單將 Tab 轉換為空格。
  頁寬
  頁寬應該設置為80字符. 源代碼一般不會超過這個寬度, 并導致無法完整顯示,
  但這一設置也可以靈活調整. 在任何情況下, 超長的語句應該在一個逗號或者 一個操作符后折行. 一條語句折行后, 應該比原來的語句再縮進2個字符.
  {} 對 {} 中的語句應該單獨作為一行.
  例如, 下面的第1行是錯誤的, 第2行是正確的:
  if (i>0) { i ++ }; // 錯誤, { 和 } 在同一行
  if (i>0) {
  i ++
  }; // 正確, { 單獨作為一行
  } 語句永遠單獨作為一行. 假如 } 語句應該縮進到與其相對應的 {
  那一行相對齊的位置。
  括號
  左括號和后一個字符之間不應該出現空格, 同樣, 右括號和前一個字符之間也不應該出現空格. 下面的例子說明括號和空格的錯誤及正確使用:
  CallProc( AParameter ); // 錯誤
  CallProc(AParameter); // 正確
  不要在語句中使用無意義的括號. 括號只應該為達到某種目的而出現在源代碼中。
  下面的例子說明錯誤和正確的用法:
  if ((I) = 42) { // 錯誤 - 括號毫無意義
  if (I == 42) or (J == 42) then // 正確 - 的確需要括號
  程序編寫規范
  exit()
  exit 除了在 main 中可以被調用外,其他的地方不應該調用。因為這樣做不給任何代碼代碼機會來截獲退出。一個類似后臺服務地程序不應該因為某一個庫模塊決定了要退出就退出。
  異常
  申明的錯誤應該拋出一個RuntimeException或者派生的異常。
  頂層的main()函數應該截獲所有的異常,并且打印(或者記錄在日志中)在屏幕上。
  垃圾收集
  JAVA使用成熟的后臺垃圾收集技術來代替引用計數。但是這樣會導致一個問題:
  你必須在使用完對象的實例以后進行清場工作。比如一個prel的程序員可能這么
  寫:
  ...
  {
  FileOutputStream fos = new FileOutputStream(projectFile);
  project.save(fos, "IDE Project File");
  }
  ...
  除非輸出流一出作用域就關閉,非引用計數的程序語言, 比如JAVA,是不能自動完成變量的清場工作的。必須象下面一樣寫:
  FileOutputStream fos = new FileOutputStream(projectFile);
  project.save(fos, "IDE Project File");
  fos.close();
  Clone
  下面是一種有用的方法:
  implements Cloneable public Object clone() {
  try {
  ThisClass obj = (ThisClass)super.clone();
  obj.field1 = (int[])field1.clone();
  obj.field2 = field2; return obj;
  } catch(CloneNotSupportedException e) {
  throw new InternalError("Unexpected CloneNotSUpportedException:
  " + e.getMessage());
  }
  }
  final 類絕對不要因為性能的原因將類定義為 final 的
  (除非程序要求這樣定義) 假如一個類還沒有預備好被繼續,最好在類文檔中注明,
  而不要將她定義為 final 的。這是因為沒有人可以保證會不會由于什么原因需要繼續她。
  訪問類的成員變量
  大部分的類成員變量應該定義為 protected 的來防止繼續類使用他

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 午夜视频中文字幕 | 国产精品久久久久久久久久iiiii | 国产精品久久久久免费视频 | 一边吃奶一边摸下娇喘 | 中国性xxx| 成人免费观看毛片 | 亚洲综合网站 | 激情小说激情电影 | 免费国产视频大全入口 | 久久精品欧美一区二区三区不卡 | 91成人免费网站 | 国产午夜精品一区二区三区不卡 | 欧美一级特黄a | 日韩精品中文字幕一区二区 | 国产精品久久久久久久久久 | 久久精品超碰 | 国产流白浆高潮在线观看 | 国产高潮好爽受不了了夜色 | 羞羞羞网站 | 日韩午夜片 | 久久亚洲一区二区三区成人国产 | 国产九色在线播放九色 | 国产精品视频一区二区三区四区国 | 免费欧美精品 | 免费看日产一区二区三区 | 成人在线免费观看小视频 | 青青草成人免费视频在线 | 久久久www成人免费毛片 | 中国黄色一级生活片 | 国产一区二区免费 | 黄色av网站在线观看 | 欧美日韩国产成人在线观看 | 亚洲成人入口 | 51色视频| 天天透天天狠天天爱综合97 | 人禽l交免费视频 | 国产精品久久久久久久不卡 | 久久精品视频一区二区三区 | 国产精品久久久久久久久久久久午夜 | 欧美在线观看视频一区 | 欧美69free性videos |