編程規(guī)范

命名

1.命名的準則是準確的表達意義。對于不同作用域的命名,可以選擇不同的長度。一般來說,作用域小的變量(比如臨時變量),可以選擇短一些的命名方式。
2.可以借助類的信息來簡化屬性、函數的命名,利用函數信息來簡化函數參數的命名。

class User{
  String name;  // not userName
  String address;  // not userAddress
}

3.命名要可讀、可搜索,不要使用生僻單詞來命名。
4.接口有兩種命名方式:一種是接口帶前綴“I”;另一種是在實現(xiàn)類中帶后綴“Impl”。抽象類也有兩種方式,一種是帶前綴“Abstract”,一種是不帶。重點是項目中要統(tǒng)一。

注釋

1.注釋要包含三個方面:做什么、為什么、怎么做。對于復雜類和接口,還需要寫明如何用。
2.注釋并非越多越好。類和函數一定要寫注釋,函數內部注釋相對少一些,一般都靠好的命名、提煉函數、解釋性變量、總結性注釋來提高代碼可讀性。

類中成員排列順序

在Google Java規(guī)范中,依賴類按照字母序從小到大排列。類中先寫成員變量后寫函數。成員變量之間或函數之間,先寫靜態(tài)成員變量或函數,后寫普通變量或函數,按照作用域大小依次排列。

把代碼分割為單元塊

當代碼邏輯比較復雜時,建議將其提煉為類或者函數,但是如果提煉出的函數只有兩三行,則不建議。

避免函數參數過多

函數包含3、4個參數是可接受的,大于5個時,會影響到代碼可讀性。解決方法有兩種:

  • 考慮函數是否職責單一,是否需要將一個函數拆分為多個函數;
  • 將函數參數封裝為對象;

不用函數參數控制邏輯

不要在函數中用boolean類型的標識參數來控制內部邏輯,這違背了單一職責原則和接口隔離原則,建議將其拆分為兩個函數。

public void buyCourse(long userId, long courseId, boolean isVip);
// 將其拆分成兩個函數
public void buyCourse(long userId, long courseId);
public void buyCourseForVip(long userId, long courseId);

移除過深嵌套層次

代碼嵌套過深往往因為if-else、switch-case、for循環(huán)過度嵌套導致。建議嵌套不要超過兩層,難以理解。解決方法:

  • 去掉(合并)多余if或else;
  • 使用continue、break、return,提前退出嵌套;
  • 調整執(zhí)行順序以減少嵌套;
  • 將部分嵌套邏輯封裝成函數調用;

學會使用解釋性變量

1.用常量取代魔法數字。

public double CalculateCircularArea(double radius) {
  return (3.1415) * radius * radius;
}

// 常量替代魔法數字
public static final Double PI = 3.1415;
public double CalculateCircularArea(double radius) {
  return PI * radius * radius;
}

2.使用解釋性變量解釋復雜表達式。

if (date.after(SUMMER_START) && date.before(SUMMER_END)) {
  // ...
} else {
  // ...
}

// 引入解釋性變量后邏輯更加清晰
boolean isSummer = date.after(SUMMER_START)&&date.before(SUMMER_END);
if (isSummer) {
  // ...
} else {
  // ...
} 
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容