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

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

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 的來防止繼續類使用他

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产男人精品视频| 日韩av男人的天堂| 亚洲欧洲国产一区| 原创国产精品91| 国产精品精品一区二区三区午夜版| 国产成人小视频在线观看| 亚洲综合自拍一区| 久久人人爽人人爽人人片av高清| 中文字幕日韩精品在线观看| 日韩成人高清在线| 国产97色在线| 欧美激情视频在线免费观看 欧美视频免费一| 欧洲亚洲免费在线| 国产精品久久久久久久久久东京| 亚洲黄色av女优在线观看| 韩国一区二区电影| 在线精品国产成人综合| 亚洲欧美日韩天堂| 欧美激情第一页xxx| 欧美激情综合色| 最近2019中文字幕第三页视频| 日韩欧美精品免费在线| 成人黄色免费在线观看| 日本韩国欧美精品大片卡二| 国产精品久久久精品| 色中色综合影院手机版在线观看| 国产精品美女www| 欧美激情中文字幕乱码免费| 黄色成人av在线| 九九热r在线视频精品| 欧美一级片在线播放| 精品久久久在线观看| 亚洲视频网站在线观看| 国产精品成人观看视频国产奇米| 一区二区欧美久久| www日韩中文字幕在线看| 亚洲人成电影网站色…| 亚洲精品福利资源站| www国产91| 欧美性videos高清精品| 26uuu另类亚洲欧美日本一| 亚洲日本欧美日韩高观看| 精品视频在线播放色网色视频| 91精品国产91久久久久福利| 91久久精品国产91性色| 国产主播精品在线| 奇米影视亚洲狠狠色| 亚洲一级免费视频| 国产精品电影久久久久电影网| 91美女高潮出水| 欧美视频中文字幕在线| 亚洲一区中文字幕在线观看| 亚洲男人天堂视频| 亚洲国产天堂久久综合网| 欧美国产亚洲精品久久久8v| 亚洲人av在线影院| 国产亚洲免费的视频看| 欧美精品一区三区| 日韩av影片在线观看| 欧美日韩精品在线播放| 国产亚洲成精品久久| 九九精品在线播放| 日韩av电影在线播放| 在线视频日韩精品| 日韩中文理论片| 好吊成人免视频| 成人动漫网站在线观看| 国产精品男女猛烈高潮激情| 国产精品久久久久91| 欧美高清videos高潮hd| 亚洲精品中文字幕有码专区| 欧美日韩国产精品一区二区不卡中文| 2023亚洲男人天堂| 琪琪第一精品导航| 国产午夜精品免费一区二区三区| 亚洲性猛交xxxxwww| 国产精品久久久久久av下载红粉| 亚洲美女av网站| 国产精品欧美亚洲777777| 亚洲男人天堂2019| 91精品啪在线观看麻豆免费| 亚洲一区二区三区在线视频| 国产精品视频午夜| 色噜噜久久综合伊人一本| 国内精品久久久久久久久| 国产在线视频欧美| 日韩激情av在线免费观看| 91在线视频导航| 日韩精品福利网站| 欧美国产日韩免费| 国产99久久精品一区二区 夜夜躁日日躁| 久久精品青青大伊人av| 91精品国产色综合久久不卡98| 韩曰欧美视频免费观看| 久久五月天色综合| 国产精品久久久久久久久借妻| 国产欧美日韩专区发布| 最新69国产成人精品视频免费| 欧美精品videos性欧美| 色悠悠国产精品| 中文欧美在线视频| 国产精品高潮呻吟久久av黑人| 欧美激情国产日韩精品一区18| 欧美大胆在线视频| 欧美一区二三区| 日本aⅴ大伊香蕉精品视频| 国产极品精品在线观看| 日韩第一页在线| 欧美日韩国产页| 日韩av免费在线看| 国产精品成人一区二区三区吃奶| 欧美在线性视频| 欧美亚洲一级片| 福利一区福利二区微拍刺激| 亚洲尤物视频网| 日本欧美黄网站| 色琪琪综合男人的天堂aⅴ视频| 欧美激情精品久久久久久黑人| 日韩精品久久久久久福利| 一个人看的www欧美| 亚洲精品一区久久久久久| 91社影院在线观看| 亚洲视频在线免费观看| 69久久夜色精品国产69乱青草| 国产亚洲福利一区| 性色av一区二区三区红粉影视| 亚洲乱码国产乱码精品精| 午夜精品视频在线| 久久免费视频网站| 欧美性猛交xxxx偷拍洗澡| 国产精品黄色影片导航在线观看| 久久韩国免费视频| 精品视频—区二区三区免费| 成人妇女免费播放久久久| 日韩在线观看免费全集电视剧网站| 亚洲精品在线视频| 亚洲国产精品久久久| 91高清免费视频| 欧美xxxx18性欧美| 91在线视频一区| 欧美日韩亚洲一区二| 欧美黄色免费网站| 中文字幕在线国产精品| 亚洲欧美精品伊人久久| 久久国产精品久久久久久| 一本色道久久88综合亚洲精品ⅰ| 亚洲综合大片69999| 日韩精品欧美激情| 少妇高潮久久77777| 日本一区二区不卡| 亚洲影院色无极综合| 亚洲美女av网站| 国产精品美女免费| 精品在线欧美视频| 亚洲成人黄色在线| 欧美巨乳美女视频| 国产中文日韩欧美| 国产在线观看精品| 国外成人在线直播| 精品小视频在线| 庆余年2免费日韩剧观看大牛| 九九热精品视频在线播放| 日韩av不卡电影| 国产精品第三页|