標籤:長度 多表關聯 cal red font 可擴充 order by ons 開發
代碼篇
1. 迴圈尤其注意,迴圈體內定義變、常量...都是錯誤的
2. 多重if判斷可使用map替代!!!
3. 避免使用else語句,替代方案:衛語句、狀態模式or策略模式!!!
4. for迴圈中嵌套if判斷,可以使用運算元替代。實現可擴充性和維護性,省去迴圈
5. 項目中儘可能多得使用commons工具類
6. 參數多寫JavaBean來封裝
7. 常量根據業務來劃分,代碼中盡量直接出現常數
8. 只對非穩定的代碼捕捉異常,異常從小到大依次捕捉,分別處理
9. 多寫注釋,建議每塊業務代碼都加註釋!!!(讀書得寫筆記,寫文章得打草稿),項目中缺少必要的注釋,簡潔有力的注釋有助於開發的效率和他人的閱讀!!!
10. 重複代碼的問題,抽取!!!能複製就堅決不黏貼,重複代碼會導致後期的改動量加大,容易遺漏;重複代碼很關鍵,品質尤為重要。項目中出現了大量重複代碼!!!
11. 集合初始化時,盡量指定集合初始化的大小,減少消耗
12. 對於明確不使用的代碼建議直接清除,或者加todo及時清除,避免出現垃圾
13. Final可以提高程式的相應效率
14. StringBuilder替代String
13.23中設計模式對應了不同的情境,建議項目中的業務從設計模式的角度出發,增加代碼的維護性和可擴充性\
15. Redis,mq的使用
資料庫
1. 建表規範
表名欄位名的規範
儲存的字串幾乎相等,使用char
欄位和注釋永遠保持一致
小數類型為decimal
合適的字元儲存長度(節省資料表空間) tinyint smallint int 和bigint的選擇
欄位和注釋永遠保持一致
長度基本不變的字串,使用char定長字串類型
2.sql最佳化
對於一成不變的表,可以在相關表增加冗餘欄位,減少關聯查詢,提高效能
Sql語句全部大寫,減少解析成本
任何較長的sql語句的都存在最佳化的空間,要儘可能的對較長的sql語句進行最佳化
3.索引
沒有唯一索引-------髒資料、效率低下
區分度最高的和等號放在最左邊
利用延遲關聯或者子查詢最佳化多分頁情境
SELECT a.* FROM 表 1 a, (select id from 表 1 where 條件 LIMIT 100000,20 ) b where a.id=b.id
多表關聯的時候被關聯的欄位需要有索引
索引長度與區分度一對矛盾體,需要建立合理的索引長度
使用搜尋引擎來替代模糊查詢,這個國網貌似正在做
使用覆蓋索引來進行查詢操作,避免回表操作,提高效率。應用:查詢指定列資料的時候!!!
Order by最後是複合式索引的一部分,索引的有序性一定需要注意
Sq建立索引的目標達到ref層級
...
4.Mybatis
1. 不使用*作為查詢的欄位列表,減少解析,避免不一致
select j.* from shop_store_joinin
2. 不要寫一個大而全的資料更新介面,傳入POJO類。例如商戶入駐,只是更新一個狀態,卻對所有的欄位進行了一次更新操作,一來存在風險,二來進行了多餘的判斷和操作,三增加了儲存
我的Java最佳化、規範總結