命名規範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等進行通訊