Java編碼規範

 

命名規範java

包名:小寫,命名有意義c++

類名,接口:首字母大寫(caml風格)程序員

方法:首字母小寫,後面的各單詞首字母大寫。使用有意義的單詞或單詞簡寫web

屬性、變量:同方法名 數據庫

常量:所有大寫,使用_分割 數組

形參:要與變量名一致 工具

數組:方括號放在變量類型後面 優化

文檔註釋: 編碼

文件註釋: 線程

/********************************************************************

* 文件名:Test.java

* 版權:Copyright (C) 2016 XXX. All Rights Reserved.

* 修改人:XXX

* 修改時間:2016-8-22

* 修改內容:添加toString方法

*******************************************************************/

 

類註釋:

/**

* 該類是對日誌的處理類(功能職責)

* @author

* @since JDK1.8

* @history 2016-8-16 XX 新建

*/

 

方法註釋;

/**

* 功能說明

* @param context 應用上下文

* @param bean

* @return DataBean

* @throws Exception 若是在轉換過程當中出錯,則拋出Exception

*/

 

屬性註釋:

/** 說明字段的含義 */

 

特殊註釋:

//TODO

沒有完成但必須完成的地方

//FIXME

用於必須修改bug的地方

 

若是一個方法是對接口的實現,那麼詳細的方法文檔註釋應該寫在接口類的方法中,實現類方法應該經過 @see 指引過去。

 

代碼優化:

1.避免「上帝類」

2.儘可能將一些邏輯實現,尤爲是可複用的邏輯實現,分離到不一樣的方法中

3.嚴格的依照JavaBean的統一方式來寫屬性訪問getter、setter方法,不然在java的反射機制實現時,會有問題

4.方法調用的速度比較,從快到慢排列: static < final < instance method < interface method < synchronized。

5.finalize方法儘量避免使用

6.儘量的使用靜態變量。若是類中的變量不會隨他的實例而變化,就能夠定義爲靜態變量,從而使他全部的實例都共享這個變量

7.不要在代碼中進行具體數值硬編碼,把它定義爲靜態常量,而後在代碼中引用

8.儘可能使用接口申明屬性和變量:

如:List<String> list=new ArrayList<~>();

Map map = new HashMap();

9.在方法中使用局部變量,必定要肯定變量賦值的惟一性。不然,代碼將難以維護,造成歧義,並且是隱含bug的溫牀。

 

代碼風格:

每行申明一個變量

int a;

int b;

每一行至多包含一個Statement

argv++; // Correct

argc++; // Correct

argv++; argc--; // AVOID!

 

關於字符串的處理的方式:

1.避免在字符串中使用「+」,儘可能使用StringBuffer 進行鏈接;

2.在使用equals和equalsIgnoreCase方法判斷兩個字符串類型操做數是否相等時,若是兩個操做數之中有一個爲字符串常量,應該將它置於點操做符「.」的左邊,將變量放在點操做符的右邊。這樣作的好處在於,程序員在使用equals和equalsIgnoreCase方法時,能夠沒必要先判斷變量操做數是否爲null

Switch:

在任何的狀況下,必須在最後寫default語句。

關於異常:

1.避免對應用程序的邏輯使用try/catch ,若是能夠用if、while等邏輯語句來處理,那麼就儘量的不用try/catch語句

2.重用異常,在必需要進行異常的處理時,要儘量的重用已經存在的異常對象。覺得在異常的處理中,生成一個異常對象要消耗掉大部分的時間

關於日誌信息的調試:

不要直接的使用System.out或者System.err或者Exception的printStackTrace()方法打印出調試信息或Exception

資源釋放:

手動使用的資源要及時釋放,好比文件資源、數據庫資源等。(雖然這個類可能實現了atupCloseable接口)

 

針對java.util包的使用注意事項:

避免使用java.util包裏面的java.util.Vector和java.util.Hashtable,由於這兩個類是synchronized的,比不是synchronized的容器類速度會慢不少,當在單線程的狀況下請使用java.util.ArrayList(接口是:java.util.List)和java.util.HashMap(接口是java.util.Map)。

 

工具類的命名:

工具描述 + Util

模塊專用常量的統一管理命名

模塊名 + Constants

 

各層代碼分工:

頁面:

展現數據

Ø 進行頁面數據驗證

Ø 不處理與應用程序相關的業務邏輯

Ø 不進行事務管理

Ø 複雜的邏輯,請交給工具類來處理

 

web層:

Ø 管理用戶界面層發出的請求,作出相應的響應

Ø 從頁面取得相應的用戶輸入數據

Ø 將數據提供給業務層,委派調用業務邏輯和其它上層處理

Ø 統一處理異常,包括持久層和業務層拋出的異常

Ø 爲頁面顯示提供數據模型

Ø 用戶身份和操做權限驗證

Ø 不進行事務管理

biz業務層:

Ø 處理應用程序的業務邏輯和業務校驗

統一管理事務

不直接與數據庫通訊

Ø 不直接與JSP、Session等進行通訊

相關文章
相關標籤/搜索