程式碼簡潔的十條建議

weixin_34107955發表於2018-12-09
5448622-8b2874e4b4c61124.png

1.命名規則

  • 所有變數,方法名和類名都應該遵循CamelCase風格。唯一不同的是,類名的首字母要大寫。
class UserService {
    private String firstName;
    
    public String getFirstName() {
        return firstName;
    }
}
  • 常量全部使用大寫字母並且以下劃線分割
final int MAX_AGE = 20;
  • 變數名或者方法名不應包含太多單詞。越簡單越好,同時要能表達出意圖。
//This is a BAD practice
public void saveUserIntoMongoDBDatabase(User user);
//This is much better
public void saveUser(User user);

2.寫你所想

定義一個變數時不要偷懶,給它一個全名,而不是名字裡的一個字母。變數名應該能表達出他的值。即便你知道這個變數是幹嘛的,並不意味其他開發者也知道。同時當你過一陣時間再來看這段程式碼時,也可能記不起這個變數的含義。
讓我們看看下面的一段程式碼:

public boolean check() {
    if (a < max) {
        return true;
    } else {
        return false;
    }
}

這段程式碼非常不清晰,其他開發當然也不明所以。我們重構一下,看看怎麼更好地寫這段程式碼。

public boolean isAgeAcceptable() {
    if (userAge < maxAge) {
        return true;
    } else {
        return false;
    }
}

3. 變數/方法宣告

類的變數應該在其頂部宣告。如此一來,你總能知道去哪裡看變數的宣告而不是滾動整個檔案去尋找。
如果一個變數只在一個方法中使用,那麼將其宣告為一個區域性變數即可。
方法宣告的順序應該和它們使用的順序一致(從上而下)。舉個栗子,如果一個方法呼叫當前的方法,那麼這個方法應該宣告當前方法的下面。
同時,越重要的方法就應該宣告在前面。

4. 單一職責

一個方法應該只負責一件事情。如果你的方法同時做啦兩件以上不同的事情,你應該這個方法的一些功能移到其他方法。
這樣的方法才容易理解,擴充套件和被其他方法複用。
舉個栗子,你有一個方法saveUserAndChargeCard(),將使用者儲存到資料庫並且刷使用者的信用卡。這個方法不好,因為他名字包含And而且幹啦兩件事。在方法命中避免使用andor等等。你可以將這個方法分成saveUser()chargeCard().

5.短方法

對開發這而言,短方法的長度並沒有一個標準的準則。可能有人說最多10行,有些人說最多五行,有些情況下20行也是可以的。所以究竟多少才合適呢?事實上,並木有一個標準答案。儘量使你的方法越短越好。通常5到10行為最佳。當然你的方法有12行或則15行也不會有人打你的,但是要保證你這15行程式碼的可理解性和高質量。

6.最小化你的程式碼

能用一行搞定的就別用三行。這意味著你寫程式碼時考慮下最佳的方式。
看看下面的例子:

boolean hasCreditCard(User user) {
    if (user.hasCard) {
        return true;
    } else {
        return false;
    }
}

乍看之下,好像並無不妥,但是這段其實可以簡化一下。

boolean hasCreditCard(User user) {
    return user.hasCard;
}

看到沒,一行抵過五行,所以下筆前三思囖。

7.重複是原罪

在你的工程裡避免程式碼冗餘。如果你的方法不能在其他地方複用,那麼想個更好的方式去實現它。你的方法應該儘可能地通用。這也將有助於你的小夥伴直接使用你的方法而不是再去寫一個。

8. 註釋

註釋在以前一段時間內都是開發者的日常操作,現在有些不同啦,如果你給你的程式碼加啦一段註釋,那麼說明你的程式碼不能自解釋,你應該選擇一個更好的方法來實現它。
註釋存在的另一個問題是,開發在經常去改程式碼去忘啦改註釋。
當然如果你寫啦一段很複雜的演算法,你的註釋將幫助其他程式設計師理解。

9. 程式碼檢測工具

即便你採納啦以上的所有建議,我也推薦你使用一些工具來檢查你的程式碼質量。這個工具可以掃描你的程式碼,並指出你出錯的地方。因為你人工檢查時可能會遺漏。
其中一個工具是SonarQube.一款程式碼質量分析的優秀產品。

10.最佳實踐

無論你在實現什麼功能,我想有人在你之前就已經做過啦。所以在你實現這個需求之前可以先調研一下。


翻譯自:10 Tips To Keep Your Code Clean

相關文章