好程序員分享Java開發經常使用規範技巧二

一、使用一些日期類的時候,推薦使用LocalDateTime來替代Calendar類,或者說使用Instant來替代掉Date類。sql

二、儘可能避免在for循環裏面執行try-catch操做,能夠選擇將try-catch操做放在循環體外部使用。數據庫

 正確作法:網絡

try {工具

         for (int i = 0; i < 100; i++) {this

             doSomeThing();設計

          }code

       }catch (Exception e){對象

            e.printStackTrace();索引

       }ci

不推薦作法:

for (int i = 0; i < 100; i++) {

      try {

                doSomeThing();

            } catch (Exception e) {

                e.printStackTrace();

            }

        }

三、對於大段的代碼進行try-catch操做,這是一種不負責任的行爲,將穩定的代碼也都包圍在了try-catch語句塊裏面沒能很好的分清代碼的穩定性範圍。

一般咱們稱在運行中不會出錯的代碼塊爲穩定性代碼,可能會有異常出錯的部分爲非穩定性代碼塊,後者纔是try-catch重點須要關注的對象。

四、在jdk7以後,對於流這類須要關閉鏈接釋放資源的對象,可使用try-with-resource處理機制來應對。

例以下方代碼:

File file = new File("*");

        try (FileInputStream fin = new FileInputStream(file)) {

            //執行相關操做

        } catch (Exception e) {

            //異常捕獲操做

        }

5.使用ArrayList的時候,若是清楚它的指定大小的話,能夠儘可能在初始化的時候進行大小指定,由於隨着arraylist不斷添加新的元素以後,鏈表的體積會不斷增大擴容。

private void grow(int minCapacity) {

        // overflow-conscious code

        int oldCapacity = elementData.length;

        int newCapacity = oldCapacity + (oldCapacity >> 1);

        if (newCapacity - minCapacity < 0)

            newCapacity = minCapacity;

        if (newCapacity - MAX_ARRAY_SIZE > 0)

            newCapacity = hugeCapacity(minCapacity);

        // minCapacity is usually close to size, so this is a win:

        elementData = Arrays.copyOf(elementData, newCapacity);

}

六、對於一些短信,郵件,電話,下單,支付等應用場景而言,開發的時候須要設置相關的防重複功能限制,防止出現某些惡意刷單,濫刷這類型狀況。

七、對於敏感詞彙發表的時候,須要考慮一些文本過濾的策略。

這一塊的功能能夠考慮直接接入市面上已有的成熟的UGC監控服務,或者使用公司內部自研的ugc過濾工具,防止用戶發表惡意評論等狀況出現。

八、在創建索引的時候,對於索引的命名須要遵循必定的規範:

索引類型
命名規則
案例
主鍵索引
pk_字段名,pk是指primary key
pk_order_id
惟一索引
uk_字段名,uk是指 unique key
uk_order_id
普通索引
idx_字段名,idx是指 index
idx_order_id
九、當咱們須要存儲一段文本信息的時候,須要先考慮存儲文本的長度。

若是文本的長度超過了5000,則不建議再選擇使用varchar類型來進行存儲,能夠考慮使用text類型進行數據存儲,這個時候能夠考慮單獨用一張表來進行存儲數據,而且經過一個額外的主鍵id來對應,從而避免影響其餘字段的查詢。

十、在進行數據庫命名的時候儘可能保證數據庫的名稱和項目工程的名稱一致。

十一、在進行表結構設計的時候,只要具備惟一性質的字段都須要創建惟一索引。

這樣有助於後期進行查詢的時候提升查詢的效率,沒有惟一索引這一層的保障,即便在業務層加入了攔截,可是依然容易形成線上髒數據的產生。

十二、在進行order by這類型sql查詢的時候,須要注意查詢索引的有序性。

關於索引的創建,能夠去了解一下索引的星級評定,例如三星索引。可是我的認爲索引沒有所謂的最優性,須要結合實際的業務場景來設計。

1三、在MySQL中,使用count(*)會統計值爲 NULL 的行,而 count(列名)不會統計此列爲 NULL 值的行。

2八、在進行數據庫存儲引擎選擇的時候,須要結合相關的應用場景來選擇,若是是須要應用在select操做較多的狀況下,能夠選擇使用MyIsAM存儲引擎,若是是對於數據的insert,update,這類修改操做較多的業務場景,則優先推薦使用innodb存儲引擎。目前廣泛互聯網公司都推薦使用innodb較多。

免責聲明:內容源自網絡,版權歸原做者全部,若有侵犯您的原創版權請告知,咱們將盡快刪除相關內容

相關文章
相關標籤/搜索