1.在switch塊內,每個case通過break/return等終止,或者說明繼續執行到那個case為止。每個switch塊內,必須包含乙個default語句且放在最後。即使什麼沒有。
2.if/else/for/while/do語句中必須使用大括號,即使一行**
3.表達異常的分支時,少用if-else
可以使用
if(condition){
.. return obj;
如果非要使用,勿超過3層。超過三層可以使用衛語句、策略模式、狀態模式等實現
4.除常用方法(get*** is***)等外,不要在條件判斷中執行其他複雜語句,提高可讀性
5.迴圈體中語句要衡量效能,盡量移至迴圈體外處理(如定義物件、變數、獲取資料庫連線,進行不必要的try-catch操作)
6.做批量操作的介面,介面入參保護。
7.引數校驗
1)呼叫頻率低的方法
2)執行時間開銷很大的方法
3)需要極高穩定性和可用性方法
4)對外提供的開放介面,(如rpc/api/http介面)
5)敏感許可權入口
8.不需要引數校驗
1)可能被迴圈呼叫的方法,方法說明外部引數檢查要求
2)底層呼叫頻度高的方法 例如dao引數校驗
3)宣告private方法,只會被自己呼叫的方法
補充--引自
1、介面入參保護,「保護」的是服務端應用,即介面提供方,最常見的做法就是校驗入參的有效值範圍和設定批量操作白名單;比如,介面入參中包含日期時,校驗日期必須在n天範圍內,或者請求返回的記錄總數必須在x條以內(比如10w條,否則縮小請求查詢的記錄範圍),或者請求返回的記錄必須分頁查詢返回;
開發手冊中,尤其提到的場景就是批量操作,因為批量操作非常耗時耗資源(服務端),批量操作的批量數應該有上限,而不是無限的。假如客戶端請求一次批量操作10w筆轉賬訂單,伺服器應該果斷拒絕,很不是很sb的忠實執行,會對服務端造成嚴重影響的批量請求,伺服器端應做好保護性程式設計,必要時應直接失敗,並在result中返回明確的errorcode和errormsg;而且,對應批量操作,實際應用中還會配置批量操作白名單!
2、入參保護,一般都是通過衛語句實現:if(請求記錄》10000條) return;直接返回。
阿里巴巴開發手冊
反例 string str start for int i 0 i 100 i 2 注意 math.random 這個方法返回是double型別,注意取值的範圍 0 x 1 能夠取到零值,注意除零異常 如果想獲取整數型別的隨機數,不要將x放大10的若干倍然後取整,直接使用random物件的nexti...
學習阿里巴巴開發手冊 補充
1.獲取單例物件需要保證執行緒安全,其中的方法也要保證執行緒安全。2.建立執行緒或執行緒池時 請指定有意義的執行緒名稱。3.執行緒資源必須通過執行緒池提供,不允許在應用中自行顯示建立執行緒。4.執行緒池不允許使用executors去建立,而是通過threadpoolexecutor的方式 5.dat...
學習阿里巴巴開發手冊 12
索引規約 1.業務上具有唯一特性的字段,即使是組合字段,也必須建成唯一索引。說明 不要以為唯一索引影響了 insert 速度,這個速度損耗可以忽略,但提高查詢速度是明顯的 另外,即使在應用層做了非常完善的校驗和控制,只要沒有唯一索引,根據墨菲定律,必然有髒資料產生。2.超過三個表禁止 join。需要...