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

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

項目開發規范(Java)

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

  rivershan(原作)
  
  
  前幾天整理出來的一個java的代碼書寫規范!
  
  項目開發規范
  
  一、目的
  
    對于代碼,首要要求是它必須正確,能夠按照程序員的真實思想去運行;第二個的要求是代碼必須清楚易懂,使別的程序員能夠輕易理解代碼所進行的實際工作。在軟件工程領域,源程序的風格統一標志著可維護性、可讀性,是軟件項目的一個重要組成部分。而目前還沒有成文的編碼風格文檔,以致于很多時候,程序員沒有一個共同的標準可以遵守,編碼風格各異,程序可維護性差、可讀性也很差。通過建立代碼編寫規范,形成開發小組編碼約定,提高程序的可靠性、可讀性、可修改性、可維護性、可繼續性和一致性,可以保證程序代碼的質量,繼續軟件開發成果,充分利用資源,使開發人員之間的工作成果可以共享。
  
   本文在參考業界已有的編碼風格的基礎上,描述了一個基于 JBuilder 的項目風格,力求一種統一的編程風格,并從整體編碼風格、代碼文件風格、函數編寫風格、變量風格、注釋風格等幾個方面進行闡述。(這些規范并不是一定要絕對遵守,但是一定要讓程序有良好的可讀性)
  
  
  二、整體編碼風格
  
  1、縮進
  
   縮進建議以4個空格為單位。建議在 Tools/Editor Options 中設置 Editor 頁面的Block ident為4,Tab Size 為8。預處理語句、全局數據、標題、附加說明、函數說明、標號等均頂格書寫。語句塊的"{"、"}"配對對齊,并與其前一行對齊,語句塊類的語句縮進建議每個"{"、"}"單獨占一行,便于匹對。JBuilder 中的默認方式是開始的"{"不是單獨一行,建議更改成上述格式(在 PRoject/Default Project Properties 中設置 Code Style 中選擇 Braces 為 Next line)。
  
  2、空格
  
   原則上變量、類、常量數據和函數在其類型,修飾名稱之間適當空格并據情況對齊。要害字原則上空一格,如:if ( ... ) 等。運算符的空格規定如下:"::"、"->"、"["、"]"、"++"、"--"、"~"、"!"、"+"、"-"(指正負號)、"&"(引用)等幾個運算符兩邊不加空格(其中單目運算符系指與操作數相連的一邊),其它運算符(包括大多數二目運算符和三目運算符"?:"兩邊均加一空格,在作函數定義時還可據情況多空或不空格來對齊,但在函數實現時可以不用。","運算符只在其后空一格,需對齊時也可不空或多空格。不論是否有括號,對語句行后加的注釋應用適當空格與語句隔開并盡可能對齊。個人認為此項可以依照個人習慣決定遵循與否。
  
  3、對齊
  
   原則上關系密切的行應對齊,對齊包括類型、修飾、名稱、參數等各部分對齊。另每一行的長度不應超過屏幕太多,必要時適當換行,換行時盡可能在","處或運算符處,換行后最好以運算符打頭,并且以下各行均以該語句首行縮進,但該語句仍以首行的縮進為準,即如其下一行為“{”應與首行對齊。
  
   變量定義最好通過添加空格形成對齊,同一類型的變量最好放在一起。如下例所示:
  int Value;
  int Result;
  int Length;
  DWord Size;
  DWORD BufSize;
  
  個人認為此項可以依照個人習慣決定遵循與否。
  
  4、空行
  
  不得存在無規則的空行,比如說連續十個空行。程序文件結構各部分之間空兩行,若不必要也可只空一行,各函數實現之間一般空兩行,由于每個函數還要有函數說明注釋,故通常只需空一行或不空,但對于沒有函數說明的情況至少應再空一行。對自己寫的函數,建議也加上“//------”做分隔。函數內部數據與代碼之間應空至少一行,代碼中適當處應以空行空開,建議在代碼中出現變量聲明時,在其前空一行。類中四個“p”之間至少空一行,在其中的數據與函數之間也應空行。
  
  5、注釋
  
  注釋是軟件可讀性的具體體現。程序注釋量一般占程序編碼量的20%,軟件工程要求不少于20%。程序注釋不能用抽象的語言,類似于"處理"、"循環"這樣的計算機抽象語言,要精確表達出程序的處理說明。例如:"計算凈需求"、"計算第一道工序的加工工時"等。避免每行程序都使用注釋,可以在一段程序的前面加一段注釋,具有明確的處理邏輯。
  
  注釋必不可少,但也不應過多,不要被動的為寫注釋而寫注釋。以下是四種必要的注釋:
  
  A. 標題、附加說明。
  
  B. 函數、類等的說明。對幾乎每個函數都應有適當的說明,通常加在函數實現之前,在沒有函數實現部分的情況下則加在函數原型前,其內容主要是函數的功能、目的、算法等說明,參數說明、返回值說明等,必要時還要有一些如非凡的軟硬件要求等說明。公用函數、公用類的聲明必須由注解說明其使用方法和設計思路,當然選擇恰當的命名格式能夠幫助你把事情解釋得更清楚。
  
  C. 在代碼不明晰或不可移植處必須有一定的說明。
  
  D. 及少量的其它注釋,如自定義變量的注釋、代碼書寫時間等。
  
   注釋有塊注釋和行注釋兩種,分別是指:"/**/"和"http://"建議對A用塊注釋,D用行注釋,B、C則視情況而定,但應統一,至少在一個單元中B類注釋形式應統一。具體對不同文件、結構的注釋會在后面具體說明。
  
  6、代碼長度
  
  對于每一個函數建議盡可能控制其代碼長度為53行左右,超過53行的代碼要重新考慮將其拆分為兩個或兩個以上的函數。函數拆分規則應該一不破壞原有算法為基礎,同時拆分出來的部分應該是可以重復利用的。對于在多個模塊或者窗體中都要用到的重復性代碼,完全可以將起獨立成為一個具備公用性質的函數,放置于一個公用模塊中。
  
  7、頁寬
  
  頁寬應該設置為80字符。源代碼一般不會超過這個寬度, 并導致無法完整顯示, 但這一設置也可以靈活調整. 在任何情況下, 超長的語句應該在一個逗號或者一個操作符后折行. 一條語句折行后, 應該比原來的語句再縮進2個字符.
  
  8、行數
  
  一般的集成編程環境下,每屏大概只能顯示不超過50行的程序,所以這個函數大概要5-6屏顯示,在某些環境下要8屏左右才能顯示完。這樣一來,無論是讀程序還是修改程序,都會有困難。因此建議把完成比較獨立功能的程序塊抽出,單獨成為一個函數。把完成相同或相近功能的程序塊抽出,獨立為一個子函數。可以發現,越是上層的函數越簡單,就是調用幾個子函數,越是底層的函數完成的越是具體的工作。這是好程序的一個標志。這樣,我們就可以在較上層函數里輕易控制整個程序的邏輯,而在底層的函數里專注于某方面的功能的實現了。
  
  
  三、代碼文件風格
  
  所有的 Java(*.java) 文件都必須遵守如下的樣式規則:
  
  . 文件生成
  
  對于規范的 JAVA 派生類,盡量用 JBuilder 的 Object Gallery 工具來生成文件格式,避免用手工制作的頭文件/實現文件。
  
  . package/import
  
  package 行要在 import 行之前,import 中標準的包名要在本地的包名之前,而且按照字母順序排列。假如 import 行中包含了同一個包中的不同子目錄,則應該用 * 來處理。
  
  package hotlava.net.stats;
  
  import java.io.*;
  import java.util.Observable;
  import hotlava.util.application;
  
  這里 java.io.* 使用來代替InputStream and OutputStream 的。
  
  . 文件頭部注釋
  
  文件頭部注釋主要是表明該文件的一些信息,是程序的總體說明,可以增強程序的可讀性和可維護性。文件頭部注釋一般位于 package/imports 語句之后,Class 描述之前。要求至少寫出文件名、創建者、創建時間和內容描述。JBuilder 的 Object Gallery 工具生成的代碼中會在類、工程文件中等自動添加注釋,我們也要添加一些注釋,其格式應該盡量約束如下:
  
  /**
  * Title: 確定鼠標位置類
  * Description: 確定鼠標當前在哪個作業欄位中并返回作業號
  * @Copyright: Copyright (c) 2002
  * @Company: HIT
  * @author: rivershan
  * @version: 1.0
  * @time: 2002.10.30
  */
  
  . 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 counters
  */
  
  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[] get

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 普格县| 陆丰市| 新河县| 惠水县| 凤凰县| 永修县| 南宫市| 济阳县| 衡阳县| 应城市| 锦屏县| 个旧市| 吉隆县| 买车| 安丘市| 交口县| 北海市| 汤原县| 吉木萨尔县| 乐平市| 庆城县| 大连市| 鹤峰县| 萨迦县| 康乐县| 双流县| 万盛区| 甘泉县| 盐边县| 东丰县| 临沧市| 饶平县| 鲁山县| 张北县| 宣武区| 宜宾县| 怀来县| 奎屯市| 沈阳市| 乐亭县| 莱州市|