1. 程式人生 > 實用技巧 >編碼規範小感受

編碼規範小感受

針對編碼規範,我覺得我做的還是比較好的,從開始學習程式設計就有這個編碼規範的意識。因為一段好的優美的程式碼,就能展現一個人的程式碼素養,同時也能看出這個人在編寫程式碼的過程中是否是邏輯清楚的。碼出來的程式碼,不僅是自己看得懂就可以了,更是為了別人也能看得懂,就像說話一樣,別人要聽得懂。這樣在以後版本迭代時,別人就能一眼看懂寫的是什麼,則提高了自己也方便了別人。

在實際開發過程中,我就深刻的感受到,編碼的規範是有多麼的重要。最近的在開發某系統,這專案之前是其他團隊開發的,我熟悉這個專案的程式碼都熟悉了蠻久,因為有些程式碼很讓人難以理解。導致查詢效率超級慢,經過自己檢查,發現以前程式碼寫的如下:

@Override
public Integer selectAllCount(IQu q, String nd) {
    // TODO Auto-generated method stub
    List<xxx> list = xxxMapper.selectAllCount(q, nd);
    return list.size();
}

獲取總記錄條數,竟然查出全表資料,然後通過list.size()獲取總記錄條數,真是讓我大開眼界,果真在實際專案中遇到了這種情況,我也不知道編寫這個程式碼的人是怎麼想得嘞,哈哈哈。應該直接通過select count(*) from db查出總記錄條數。

在專案中還經常遇到if語句不打括號的情況:

@Override
public Integer selectByXxxCount(IQu q) {
    List<xxx> list= xxxRecordCounterMapper.selectByXxxCount(q);
    // 程式碼不規範:
    if(list==null||list.size()==0) return 0;
    RecordTotal recordTotal = list.get(0);
    if (recordTotal.getCounter() == null) {
        return 0;
    }
    return recordTotal.getCounter();
}

不打括號,很容易踩坑,下次如果有需求去修改這裡的程式碼,如果直接在if語句後面在加一句,沒有大括號就會出大問題。應修改為:

@Override
public Integer selectByXxxCount(IQu q) {
    List<RecordTotal> list= xxxRecordCounterMapper.selectByXxxCount(q);
    // 正確寫法:
    if(list==null||list.size()==0){
        return 0;
    }
    RecordTotal recordTotal = list.get(0);
    if (recordTotal.getCounter() == null) {
        return 0;
    }
    return recordTotal.getCounter();
}

我之前經常會出現的問題,就是經常寫魔法值,魔法數值使程式碼的可讀性大大下降。而且,如果同樣的數值多次出現時,到底這些數值是不是帶有同樣的含義呢,誰也說不清楚。另一方面,如果本來應該使用相同數值的地方,一旦用錯了,也很難發現。因此,需要時刻注意,極力避免使用魔法數值。我現在已經有意識避免去製造魔法值了。解決辦法就是建立常量,常量名錶明在這個值的代表意義,見名知意。並且統一管理這些值,還便於維護。如:

// 直接看程式碼,這個16究竟有何含義呢?
int[] arr = new int[16];

/*--------------------------------------華麗的分割線--------------------------------------*/

// 定義一個常量,並將這個值的意義定位變數名
static final int ARRAY_MAX_SIZE = 16;
// 此時含義是很清楚的
int[] arr = new int [ARRAY_MAX_SIZE];

P3C是值得去學習的,建議在開發工具上裝上ALIBABA規範外掛和SonarLink外掛,這些工具都可以幫助查詢程式碼的不規範,在編寫程式碼的過程中,就能知道寫的程式碼是否規範,根據提示去修改程式碼,讓程式碼更加規範。