阿里編碼規範學習

本身平時的代碼規範不符合要求的重點分析:正則表達式

一、POJO類中布爾類型的變量,都不要加is,不然部分框架解析會引發序列化錯誤。框架

二、接口類中的方法和屬性不要加任何修飾符號(public 也不要加),保持代碼的簡潔性,並加上有效的Javadoc註釋。線程

三、【參考】各層命名規約: A) Service/DAO層方法命名規約 1) 獲取單個對象的方法用get作前綴。 2) 獲取多個對象的方法用list作前綴。 3) 獲取統計值的方法用count作前綴。 4) 插入的方法用save/insert作前綴。 5) 刪除的方法用remove/delete作前綴。 6) 修改的方法用update作前綴。 B) 領域模型命名規約 1) 數據對象:xxxDO,xxx即爲數據表名。 2) 數據傳輸對象:xxxDTO,xxx爲業務領域相關的名稱。 3) 展現對象:xxxVO,xxx通常爲網頁名稱。 4) POJO是DO/DTO/BO/VO的統稱,禁止命名成xxxPOJO日誌

四、long或者Long初始賦值時,使用大寫的L,不能是小寫的l代碼規範

五、不要使用一個常量類維護全部常量,按常量功能進行歸類,分開維護。對象

六、關於基本數據類型與包裝數據類型的使用標準以下: 1) 【強制】全部的POJO類屬性必須使用包裝數據類型。 2) 【強制】RPC方法的返回值和參數必須使用包裝數據類型。 3) 【推薦】全部的局部變量使用基本數據類型。 說明:POJO類屬性沒有初值是提醒使用者在須要使用時,必須本身顯式地進行賦值,任何NPE問題,或者入庫檢查,都由使用者來保證。接口

七、【強制】定義DO/DTO/VO等POJO類時,不要設定任何屬性默認值。資源

八、【強制】POJO類必須寫toString方法。rem

九、【強制】關於hashCode和equals的處理,遵循以下規則: 1) 只要重寫equals,就必須重寫hashCode。 2) 由於Set存儲的是不重複的對象,依據hashCode和equals進行判斷,因此Set存儲的對象必須重寫這兩個方法。 3) 若是自定義對象作爲Map的鍵,那麼必須重寫hashCode和equals。 說明:String重寫了hashCode和equals方法,因此咱們能夠很是愉快地使用String對象做爲key來使用。get

十、【強制】泛型通配符<? extends T>來接收返回的數據,此寫法的泛型集合不能使用add方法,而<? super T>不能使用get方法,作爲接口調用賦值時易出錯。 說明:擴展說一下PECS(Producer Extends Consumer Super)原則:第1、頻繁往外讀取內容的,適合用<? extends T>。第2、常常往裏插入的,適合用<? super T>。

十一、【強制】線程池不容許使用 【強制】線程池不容許使用 Executors 去建立,而是經過 去建立,而是經過 去建立,而是經過 ThreadPoolExecutor r的方式,這樣 的方式,這樣 的處理方式讓寫同窗更加明確線程池運行規則,避資源耗盡風險。

十二、【強制】類、類屬性、類方法的註釋必須使用Javadoc規範,使用/**內容*/格式,不得使用// xxx方式。

1三、【強制】在使用正則表達式時,利用好其預編譯功能,能夠有效加快正則匹配速度。 說明:不要在方法體內定義:Pattern pattern = Pattern.compile(規則);

1四、【強制】應用中不可直接使用日誌系統(Log4j、Logback)中的API,而應依賴使用日誌框架SLF4J中的API,使用門面模式的日誌框架,有利於維護和各個類的日誌處理方式統一。
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static final Logger logger = LoggerFactory.getLogger(Abc.class);

1五、【強制】count(distinct col) 計算該列除NULL以外的不重複行數,注意 count(distinct col1, col2) 若是其中一列全爲NULL,那麼即便另外一列有不一樣的值,也返回爲0。 1六、【強制】當某一列的值全是NULL時,count(col)的返回結果爲0,但sum(col)的返回結果爲NULL,所以使用sum()時需注意NPE問題。 正例:可使用以下方式來避免sum的NPE問題:SELECT IF(ISNULL(SUM(g)),0,SUM(g)) FROM table;

相關文章
相關標籤/搜索