如何有效規範開發公司javaweb項目

1.爲何須要要規範管理
    a.web項目臃腫,不利於部署與管理,使用體驗差
    b.項目中使用技術駁雜,可讀性差
    c.項目業務不統一,每每開發出來的代碼通用性差,擴展性差
    d.代碼命名沒有統一規範,註釋少
    e.人員使用變更頻繁,習慣性帶入我的開發習慣,接手項目困難
    f.管理人員對代碼審查薄弱
    
2.如何規範管理
    a.爲了保證質量,下降成本,注重代碼審查
    b.強制開發人員遵照項目開發代碼命名等規範
    c.針對業務複雜的方法,作好註釋
    e.堅定剔除一些擴展性差,不易維護的惡性代碼web

 

下面說是整理的一些關於代碼規範的具體措施算法

一             目的

爲了保證公司編寫出的程序都符合相同的規範,並且便捷,保證一致性、統一性更符合構件化的要求而創建的程序編碼規範,要使程序易懂。app

二             範圍

適用於企業全部基於JavaEE軟件開發項目。ide

三             命名及開發規範

全部命名(類、函數、變量..)均要求意義明確易於理解,儘可能使用有實際意義的英文單詞或英文單詞的縮寫,避免在代碼中直接使用數字等不肯定意義的詞,更切忌使用中文拼音的首字母。命名推薦使用駝峯命名方式函數

 

註釋

外部註釋

      外部註釋指對文件、類、方法等添加註釋頭,能夠利用Eclipse的註釋模板功能快速的添加註釋,註釋模板設置方法,Eclipse->Windows->Preferences->Java->Code Style->Code Templates->Comments現統一規定以下:ui

      Files編碼

/**  

 *@Title:     ${file_name}

 *@Package        ${package_name}

 *@Description:   ${todo}

 *@author          finger

 *@date           ${date} ${time}

 *@version        V1.0  

 */

Types:lua

/**

 *@title            ${type_name}

 *@descript       ${todo}

 *@author         finger

 *@date              ${date}  ${time}

 *@version        V1.0

*/

Fields:spa

/**

 *@Fields         ${field} ${todo}

 */

 

Constructors:命令行

/**

 *<p>Title:          </p>

 *<p>Description:    </p>

 *${tags}

 */

Methods:

/**

 *@title          ${enclosing_method}

 *@descript       ${todo}

 *@param          ${tags}

 *@return         ${return_type} 

 *@throws

 */

Overriding methods:

/*(non Javadoc)

 *<p>Title: ${enclosing_method}</p>

 *<p>Description: </p>

 *${tags}

 *${see_to_overridden}

 */

Delegate methods:

/**

 *${tags}

 *${see_to_target}

 */

Getters:

/**

 *@return the ${bare_field_name}

 */

Setters:

/**

 *@param ${param} the ${bare_field_name} to set

 */

外部註釋需在必要的地方補充完整如下信息

@descript 描述成員方法的功能及存在的緣由

@author 名稱   後加上相應的做者

@version 文本  插入指定文本的版本信息

@param 參數-名稱描述

@return返回值描述

@exception 完整的類名稱 描述信息

@throws 完整的類名稱 描述信息

@see 引用其餘類,格式以下:@see 類名 

                           @see 完整類名

                           @see 完整類名#方法名

{@link引用}

           @Override   重載函數必須在函數頭添加劇載標示

內部註釋

  1. 在方法內部的開始部分統一註釋方法的邏輯
  2. 控制結構,結構性語句的起始位置須要註明,控制結構的尾部
  3. 註明局部變量
  4. 註釋結束括號}
  5. 註釋要適當,使代碼段落分明,一目瞭然。

JAVA規範

     Java代碼

      Java源碼中除靜態常量定義外應禁止使用下劃線(_)做爲各類變量、函數、接口、類名等各類命名的字符,命名應儘量不使用拼音及拼音縮寫,而改用規範的英文翻譯單詞命名。其餘具體命名規範以下:

Package

      Package的名字應爲所有小寫單詞組成,不該包含大寫字母、數字等其餘字符,單詞應爲完整的單詞或規範且公認的縮寫。

例:com.companyName.mobile.app

Class

      Class的名字應爲大寫字母開頭,後面單詞也需大寫字母開頭。

例:TaskDetailActivity

Interface

      接口命名同Class

常量

      常量名字全部字符均須大寫,單詞間使用下劃線(_)作分隔符。

例:CONNECT_TIMEOUT

變量

      變量的命名主要分如下兩種方法:

Camel標誌法:首字母是小寫,接下來的單詞都以大寫字母開頭。對於自定義的類或不經常使用的類對象使用該種命名法則(除下述外的類型)。

書寫規範

      代碼的書寫規範主要從註釋和書寫習慣對代碼進行一個規範。一段規範的代碼不只便於調試及時發現錯誤所在,更能給他人或者往後本身維護帶來許多便利,須要注意如下幾點:

1.     註釋文檔

2.     段落化

3.     多行語句段落化

4.     使用空格和空行

5.     方法不能太長,遵循30秒規則

6.     定義消息的傳遞,在註釋中體現

7.     簡短的命令行

8.     將比較的常數放在左方,以防止誤寫爲賦值語句

書寫習慣

縮進

      縮進通常參照Eclipse默認Format的縮進,Eclipse使用Ctrl+Shift+F快捷鍵來快速格式化當前文件代碼,默認縮進爲1個Tab即4個空格的字符長度。語句塊的{},其中{要跟在分塊開始語句以後,如:函數定義、if條件和循環語句等末尾,else語句不單獨另起一行。

例:

if (「abcd」.equals()){

……

}else{

……

}

空格

      原則上變量、類、常量數據和函數在其類型,修飾名稱之間適當空格並據狀況對齊。關鍵字原則上空一格,如:if ( ... ) 等。運算符的空格規定以下:"::"、"->"、"["、"]"、" "、"--"、"~"、"!"、" "、"-"(指正負號)、"&"(引用)等幾個運算符兩邊不加空格(其中單目運算符係指與操做數相連的一邊),其它運算符(包括大多數二目運算符和三目運算符"?:"兩邊均加一空格,在做函數定義時還可據狀況多空或不空格來對齊,但在函數實現時能夠不用。","運算符只在其後空一格,需對齊時也可不空或多空格。不管是否有括號,對語句行後加的註釋應用適當空格與語句隔開並儘量對齊。

對齊

      原則上關係密切的行應對齊,對齊包括類型、修飾、名稱、參數等各部分對齊。另每一行的長度不該超過屏幕太多,必要時適當換行,換行時儘量在","處或運算符處,換行後最好以運算符打頭,而且如下各行均以該語句首行縮進,但該語句仍以首行的縮進爲準,即如其下一行爲「{」應與首行對齊。變量定義最好經過添加空格造成對齊,同一類型的變量最好放在一塊兒。以下例所示:
int Value;

int Result;

int Length;

Object currentEntry;

空行

      不得存在無規則的空行,好比說連續十個空行。程序文件結構各部分之間空兩行,若沒必要要也可只空一行,各函數實現之間通常空兩行,因爲每一個函數還要有函數說明註釋,故一般只需空一行或不空,但對於沒有函數說明的狀況至少應再空一行。

代碼長度

      對於每個函數建議儘量控制其代碼長度爲53行左右,超過53行的代碼要從新考慮將其拆分爲兩個或兩個以上的函數。函數拆分規則應該一不破壞原有算法爲基礎,同時拆分出來的部分應該是能夠重複利用的。對於在多個模塊或者窗體中都要用到的重複性代碼,徹底能夠將起獨立成爲一個具有公用性質的函數,放置於一個公用模塊中。

頁寬

      頁寬應該設置爲80字符。源代碼通常不會超過這個寬度, 並致使沒法完整顯示, 但這一設置也能夠靈活調整. 在任何狀況下, 超長的語句應該在一個逗號或者一個操做符後折行. 一條語句折行後, 應該比原來的語句再縮進2個字符。

變量初始化

      對變量最好始終進行定義初始化,以減少不容易調試的bug的產生。

去除警告

      對文件中的警告,應儘可能或極力去消除警告,對於暫時長時不使用的函數,可使用添加@SuppressWarnings("unused")來去除警告或在配置庫(VSS、CVS、SVN)保存有備份的狀況下暫時刪除該方法。

其餘

      對於比較應把常量放在前面,以避免誤寫爲賦值語句或者形成沒必要要的空指針錯誤。

例:

while (0 == flag){

……

}



if (「abcd」.equals(sName)){

……

}

減小沒必要要的語句和局部變量定義或冗餘的寫法

例:

冗餘的寫法:

boolean bResult = false;

if ( a == b){

      bResult = true;

}else{

      bResult = false;

}

return bResult;

正確的寫法:

return a == b;

冗餘的寫法:

if (bIsFile == fasle) {

      ……

}

正確的寫法:

if (! bIsFile) {

      ……

}

 

經常使用規範編碼規範

1.     使用 get/set 對類屬性進行訪問,這是Java 社區的核心編碼規範。

2.   使用 is 前綴表示一個布爾變量和方法。

a)  isUsed, isEmpty,isVisible,isFinished

                         i.      有時也可使用 has,can,should:

1.  boolean hasLicense();

2.  boolean canEvaluate();

3.  boolean shouldAbort = false;

3.   在查詢方法中應使用 find 做爲前綴

vertex.findNearestVertex();

matrix.findSmallestElement();

4.  使用 initialize 作爲對象初始化的方法前綴,也能夠簡寫爲init

initializeFiles();

init();

initFontSet();

5.   對於對象集合, 變量名稱應使用複數。

Collection<Point> points;

int[] values;

6.   對於抽象類,應該使用 Abstract 前綴。

                         i.      AbstractReportBuilder,AbstractBeanFactory

7.   對於表示編號的變量,應加 No 後綴。

a)  tableNo, userNo,employeeNo

8.   常在一塊兒使用的對稱詞彙,這些詞彙一塊兒使用,方法的表達意圖天然能夠互相推測和演繹。

get/set, add/remove, create/destroy, start/stop,

insert/delete, increment/decrement, begin/end, first/last,up/down, min/max, next/previous, old/new, open/close,show/hide, suspend/resume

9.   避免使用否認布爾變量

a)  bool isError; // 避免: isNoError

b)  bool isFound; // 避免: isNotFound

10. 異常類應該使用 Exception 作爲後綴。

a)  AccessException, RuntimeException

缺省接口實現應該使用 Default 前綴

class DefaultTableCellRenderer

implements TableCellRenderer {

}

11. 對於單例類(Singleton),應該使用getInstance 方法獲得單例。            

public class UnitManager {

private final static UnitManager instance new UnitManager();

private UnitManager() {

...

}

public static UnitManager getInstance(){

return instance_;

}

}

12. 對於工廠類,進行建立對象的方法,應該使用 new 前綴

class PointFactory {

public Point newPoint(...)

...

}

}
相關文章
相關標籤/搜索