(二)阿里巴巴JAVA程式設計規範之異常日誌
反例:public int f(){ returnInteger物件},如果為null,自動解箱拋NPE。
2)資料庫的查詢結果可能為null。
3)集合裡的元素即使isNotEmpty,取出的資料元素也可能為null。
4)遠端呼叫返回物件,一律要求進行NPE判斷。
5)對於Session中獲取的資料,建議NPE檢查,避免空指標。
6)級聯呼叫obj.getA().getB().getC();一連串呼叫,易產生NPE。
11.【推薦】在程式碼中使用“拋異常”還是“返回錯誤碼”,對於公司外的http/api開放介面必須使用“錯誤碼”;而應用內部推薦異常丟擲;跨應用間RPC呼叫優先考慮使用Result
說明:關於RPC方法返回方式使用Result方式的理由:
1)使用拋異常返回方式,呼叫方如果沒有捕獲到就會產生執行時錯誤。
2)如果不加棧資訊,只是new自定義異常,加入自己的理解的error message,對於呼叫端解決問題的幫助不會太多。如果加了棧資訊,在頻繁調用出錯的情況下,資料序列化和傳輸的效能損耗也是問題。
12.【推薦】定義時區分unchecked/checked異常,避免直接使用RuntimeException丟擲,更不允許丟擲Exception或者Throwable,應使用有業務含義的自定義異常。推薦業界已定義過的自定義異常,如:
13.【參考】避免出現重複的程式碼(Don’t RepeatYourself),即DRY原則。
說明:隨意複製和貼上程式碼,必然會導致程式碼的重複,在以後需要修改時,需要修改所有的副本,容易遺漏。必要時抽取共性方法,或者抽象公共類,甚至是共用模組。
正例:一個類中有多個public方法,都需要進行數行相同的引數校驗操作,這個時候請抽取:
private boolean checkParam(DTO dto){...}
(二) 日誌規約
1.【強制】應用中不可直接使用日誌系統(Log4j、Logback)中的API,而應依賴使用日誌框架
SLF4J中的API,使用門面模式的日誌框架,有利於維護和各個類的日誌處理方式統一。
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static final Loggerlogger = LoggerFactory.getLogger(Abc.class);
2. 【強制】日誌檔案推薦至少儲存15天,因為有些異常具備以“周”為頻次發生的特點。
3. 【強制】應用中的擴充套件日誌(如打點、臨時監控、訪問日誌等)命名方式:appName_logType_logName.log。logType:日誌型別,推薦分類有stats/desc/monitor/visit
等;logName:日誌描述。這種命名的好處:通過檔名就可知道日誌檔案屬於什麼應用,什麼
相關推薦
(二)阿里巴巴JAVA程式設計規範之異常日誌
反例:public int f(){ returnInteger物件},如果為null,自動解箱拋NPE。 2)資料庫的查詢結果可能為null。 3)集合裡的元素即使isNotEmpty,取出的資料元素也可能為null。 4)遠端呼叫返回物件,一律要求進行NPE判斷。 5)對於Session中獲取的資料,建
(三)阿里巴巴JAVA程式設計規範之MYSQL規約
(一) 建表規約 1. 【強制】表達是與否概念的欄位,必須使用is_xxx的方式命名,資料型別是unsignedtinyint (1表示是,0表示否),此規則同樣適用於odps建表。 說明:任何欄位如果為非負數,必須是unsigned。 2. 【強制】表名、欄位名必
(四)阿里巴巴JAVA程式設計規範之工程規約
開放介面層:可直接封裝Service介面暴露成RPC介面;通過Web封裝成http介面;閘道器控制層等。終端顯示層:各個端的模板渲染並執行顯示層。當前主要是velocity渲染,JS渲染,JSP渲染,移動端展示層等。 ·Web層:主要是對訪問控制進行轉發,各類基本引數校驗,或者不復用的業務簡單處理等。 ·S
Java併發程式設計(二)多執行緒程式設計
在上一節,我們介紹了程序與執行緒的概念,接下來介紹如何使用多執行緒(暫不介紹多程序)。 2. Thread物件 每個執行緒都對應一個Thread例項,存在兩種策略使用Thread類來建立併發程式。 直接進行執行緒的建立和管理,也就是當需要開啟一個非同
Java開發程式碼規範之異常日誌(二)——日誌規約
文章通過學習《阿里巴巴Java開發手冊》整理 1。應用中不可直接使用日誌系統(Log4j、Logback)中的API,而應依賴使用日誌框架SLF4J中的API,使用門面模式的日誌框架,有利於維護和各個類的日誌處理方式統一。 import org.
java內存模型(二)深入理解java內存模型的系列好文
總結 nal href ola down 深入理解 ati markdown vol 深入理解java內存模型(一)——基礎深入理解java內存模型(二)——重排序深入理解java內存模型(三)——順序一致性深入理解java內存模型(四)——volatile深入理解java
Kafka筆記整理(二):Kafka Java API使用
大數據 Kafka Java [TOC] Kafka筆記整理(二):Kafka Java API使用 下面的測試代碼使用的都是下面的topic: $ kafka-topics.sh --describe hadoop --zookeeper uplooking01:2181,uplooking0
微信小程式入門學習筆記(二)——阿里雲伺服器PHP MYSQL Apache配置
持續更新 持續學習 感謝原文大佬連結 https://www.linuxidc.com/Linux/2017-08/146220.htm 筆者在阿里雲上買了輕量應用伺服器 學生認證通過以下 便宜的 選擇的CentOS 7.3 64位 https://promot
Retrofit2 學習總結 (二)Rxjava +Retrofit +java web伺服器簡單小例子
通過一段時間的學習,Rxjava Retrofit2終於算是入了門,學習的過程中寫了個簡單的小例子,像我這樣的人學習東西還是喜歡有一個正確的例子用來學習的。 本demo已經上傳到了gitHup: java伺服器 :https://github.com/tanglonghui/Retrofit
C++ Template (二):初步超程式設計
前言 在上一篇部落格C++ Template (一):模板基礎中,簡單介紹了模板的定義,例項化,特化以及引數包的使用,在一些簡單的場景中,已經可以通過這些知識去大展手腳了。但是想真正發揮Templa
java基礎(二):談談Java基本資料結構
資料結構是計算機儲存,組織資料的方式。資料結構是指相互之間存在一種或多種特定關係的資料元素的集合。通常情況下,精心選擇的資料結構可以帶來更高的執行或儲存效率。資料結構往往同高效的檢索演算法和索引技術有關 java中常見的幾種資料結構(也是初級工程師常見面試題)主要是一些常見的容器,它們主要來自於Collec
筆試面試(3)阿里巴巴2014筆試題詳解(9月22北京)
第一部分 單選題(前10題,每題2分;後10題,每題3分。選對得滿分,選錯倒扣1分,不選得0分) 1、一次記憶體訪問,SSD硬碟訪問和SATA硬碟隨機訪問的時間分別是() A、幾微秒,幾毫秒,幾十毫秒B、幾十納秒,幾十毫秒,幾十毫秒 C、幾十納秒
idea安裝阿里巴巴Java開發規範外掛
Idea Plugin一,環境Project JDK: 1.7+Gradle: 3.0+(Require JDK1.8+ for gradle)二,安裝方法一:Install from reposito
C++學習(二) C++面向物件程式設計方法概述
(1)面向過程與面向物件的比較 面向過程程式設計方法(C語言) 分析出要解決所需要的步驟,然後用函式把各步驟逐個實現,執行時依次呼叫各個函式即可。 程式 = 演算法 + 資料結構 面向物件程式設計方法(C++語言) 把問題分解成各個物件,描述各個物件的
筆試面試(2)阿里巴巴2014秋季校園招聘-軟體研發工程師筆試題詳解
第一部分: 單選題 1. 假設把整數關鍵碼K雜湊到N個槽列表,以下哪些雜湊函式是好的雜湊函式 A: h(K)=K/N; B: h(K)=1; C: h(K)=K mod N; D: h(K)=
阿里巴巴Java開發規範手冊
阿里巴巴 JAVA 開發手冊 1 / 32 Java 開發手冊 版本號 制定團隊 更新日期 備 注 1.0.0 阿里巴巴集團技術部 2016.12.7 首次向 Java 業界公開 一、程式設計規約 (一) 命名規約 1. 【強制】所有程式設計相關命
阿里巴巴JAVA開發規範外掛
也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興! 外掛有哪些功能? 阿里技術公眾號於2017年2月9日首次公佈《阿里巴巴Java開發規約》,瞬間引起全民程式碼規範的熱潮,9月底又釋出了PDF的終極版,大家踴躍留言,期待配套的靜
Java壓縮技術(二) ZIP壓縮——Java原生實現
查過相關資料後才知道,ZIP應該算作歸檔類的壓縮演算法,每一門學科都可深可淺!閒言少敘,先說ZIP壓縮。 zip壓縮需要通過ZipOutputStream 執行write方法將壓縮資料寫到指定輸出流中。 注意,這裡應先使用CheckedOutputStream 指定檔案校驗
Elasticsearch(二):使用JAVA API實現簡單查詢、聚合查詢
ES版本:2.3.1 JDK:1.8 所需要的jar包請在ES安裝路徑下的jars包中獲得,不要使用其他的jar否則容易出現版本問題! 注意:程式碼中TransportClient client=ESLink.getTransportClient()
【Java開發手冊之異常日誌(二)】日誌規約
【強制】應用中不可直接使用日誌系統 (Log 4 j 、 Logback) 中的 API ,而應依賴使用日誌框架SLF 4 J 中的 API ,使用門面模式的日誌框架,有利於維護和各個類的日誌處理方式統一。 import org.slf4j.Logg