1. 程式人生 > >好程式設計師分享Java開發常用規範技巧二

好程式設計師分享Java開發常用規範技巧二

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

2、儘量避免在for迴圈裡面執行try-catch操作,可以選擇將try-catch操作放在迴圈體外部使用。

 正確做法:

try {

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

             doSomeThing();

          }

       }catch (Exception e){

            e.printStackTrace();

       }

 

不推薦做法:

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

 

      try {

                doSomeThing();

            } catch (Exception e) {

                e.printStackTrace();

            }

        }

 

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

通常我們稱在執行中不會出錯的程式碼塊為穩定性程式碼,可能會有異常出錯的部分為非穩定性程式碼塊,後者才是try-catch重點需要關注的物件。

4、在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);

}

6、對於一些簡訊,郵件,電話,下單,支付等應用場景而言,開發的時候需要設定相關的防重複功能限制,防止出現某些惡意刷單,濫刷這型別情況。

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

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

8、在建立索引的時候,對於索引的命名需要遵循一定的規範:

 

索引型別

命名規則

案例

主鍵索引

pk_欄位名,pk是指primary key

pk_order_id

唯一索引

uk_欄位名,uk是指 unique key

uk_order_id

普通索引

idx_欄位名,idx是指 index

idx_order_id

9、當我們需要儲存一段文字資訊的時候,需要先考慮儲存文字的長度。

如果文字的長度超過了5000,則不建議再選擇使用varchar型別來進行儲存,可以考慮使用text型別進行資料儲存,這個時候可以考慮單獨用一張表來進行儲存資料,並且通過一個額外的主鍵id來對應,從而避免影響其他欄位的查詢。

10、在進行資料庫命名的時候儘量保證資料庫的名稱和專案工程的名稱一致。

11、在進行表結構設計的時候,只要具有唯一性質的欄位都需要建立唯一索引。

這樣有助於後期進行查詢的時候提高查詢的效率,沒有唯一索引這一層的保障,即使在業務層加入了攔截,但是依然容易造成線上髒資料的產生。

12、在進行order by這型別sql查詢的時候,需要注意查詢索引的有序性。

關於索引的建立,可以去了解一下索引的星級評定,例如三星索引。但是個人認為索引沒有所謂的最優性,需要結合實際的業務場景來設計。

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

28、在進行資料庫儲存引擎選擇的時候,需要結合相關的應用場景來選擇,如果是需要應用在select操作較多的情況下,可以選擇使用MyIsAM儲存引擎,如果是對於資料的insert,update,這類修改操作較多的業務場景,則優先推薦使用innodb儲存引擎。目前普遍網際網路公司都推薦使用innodb較多。

免責宣告:內容源自網路,版權歸原作者所有,如有侵犯您的原創版權請告知,我們將盡