程式碼簡潔的十條建議
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而且幹啦兩件事。在方法命中避免使用and和or等等。你可以將這個方法分成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.最佳實踐
無論你在實現什麼功能,我想有人在你之前就已經做過啦。所以在你實現這個需求之前可以先調研一下。
相關文章
- PHP程式碼優化的40條建議PHP優化
- JAVA程式碼編寫的30條建議 .Java
- JAVA程式碼編寫的30條建議Java
- 精簡程式碼 為網站減負的十大建議網站
- 高效專案管理的十條建議(轉)專案管理
- JAVA程式碼編寫的30條建議(轉)Java
- 最簡潔的PHP程式設計師學習路線及建議PHP程式設計師
- 讓論文摘要更出彩的十條建議
- JavaScript 程式碼簡潔之道JavaScript
- JavaScript程式碼簡潔之道JavaScript
- 如何編寫簡潔的程式碼?
- 提高網頁可訪問性的十條建議網頁
- JAVA優質程式碼編寫的30條可行建議Java
- Dave Cheney:編寫簡單,可讀,可維護的Go程式碼的十個工程建議Go
- JS程式碼簡潔之道--函式JS函式
- Clean Code PHP 程式碼簡潔之道PHP
- PHP程式碼規範簡潔之道PHP
- PHP 程式碼規範簡潔之道PHP
- 使用Wardley Mapping有效講故事的十條建議 - kdaAPP
- 將 Web 應用效能提高十倍的10條建議Web
- Java程式碼建議Java
- 總結 90 條寫 Python 程式的建議Python
- 老程式設計師的10條中肯建議程式設計師
- 提高程式設計能力的7條建議程式設計
- 給新程式設計師的10條建議程式設計師
- IT工程師必看的十條建議(以批評的態度去看)工程師
- PHP程式碼簡潔之道——變數部分PHP變數
- PHP程式碼簡潔之道——函式部分PHP函式
- JAVA基礎之程式碼簡潔之道Java
- Java 簡潔程式碼利器 —— Lambda 表示式Java
- 我總結了寫出高質量程式碼的12條建議
- Docker:構建API的簡潔高效之道DockerAPI
- 在 Laravel 中編寫簡潔的程式碼的策略Laravel
- 程式碼的清晰和簡潔之間的選擇
- 24條 Docker 建議Docker
- 給程式設計師“菜鳥”的6條建議程式設計師
- async/await 是如何讓程式碼更加簡潔的?AI
- 【JS】裝飾器讓你的程式碼更簡潔JS