什麼程式才算是clean code?

什麼是 Clean Code?

寫出「乾淨的程式碼」(clean code)是許多開發者的目標,因為它不僅讓程式易於閱讀、維護,還能減少 bug 和技術債。以下是一些核心原則和實用的建議,幫助你寫出 clean code:

1. 命名要有意義

原則:變數、函數、類別的名稱應該清楚表達它的用途,避免模糊或過於簡短的命名。
壞例子:

int x = 10; // x 是什麼?
void f();   // f 做什麼?

好例子:

int userAge = 10;           // 表示使用者的年齡
void calculateTotalPrice(); // 表示計算總價格

2. 函數要短小且單一職責

原則:一個函數只做一件事,保持短小精悍(理想上是幾行到 20 行左右)。
壞例子:

function processOrder(order) {
  // 驗證訂單
  if (!order.items) return false;
  // 計算價格
  let total = order.items.reduce((sum, item) => sum + item.price, 0);
  // 儲存到資料庫
  database.save(order);
}

好例子:

function validateOrder(order) {
  return order.items && order.items.length > 0;
}

function calculateTotalPrice(items) {
  return items.reduce((sum, item) => sum + item.price, 0);
}

function saveOrder(order) {
  database.save(order);
}

建議:如果函數超過一個螢幕高度,考慮拆分;命名要能反映單一目的。

3. 命名要有意義

原則:好的程式碼應該靠命名和結構來說明意圖,而不是依賴大量註解。
壞例子:

// 檢查使用者是否成年
if (a > 18) {
  return true;
}

好例子:

boolean isAdult(int age) {
    return age > 18;
}

建議:保留必要的註解(例如解釋「為什麼」而不是「做了什麼」),但避免多餘的註解。

4. 一致的格式與風格

原則:程式碼的縮排、括號位置、命名慣例要一致,這樣讀起來才舒服。
壞例子:

void Func(int x){if(x>0)printf("Hi");}

好例子:

void printGreeting(int count) {
    if (count > 0) {
        printf("Hi");
    }
}

建議:使用工具(如 Prettier、ESLint)自動格式化,或遵循團隊的 coding style(例如 Google 或 Airbnb 規範)。

5. 避免重複(DRY - Don’t Repeat Yourself)

原則:重複的程式碼應該提取成函數、類別或模組。
壞例子:

print("User: " + name + ", Age: " + str(age))
print("User: " + name2 + ", Age: " + str(age2))

好例子:

def printUserDetails(name, age):
    print(f"User: {name}, Age: {age}")

printUserDetails(name, age)
printUserDetails(name2, age2)

建議:看到三次以上重複時,考慮抽象化。

6. 錯誤處理要清晰

原則:明確處理異常情況,避免讓程式默默失敗。
壞例子:

def divide(a, b):
    return a / b  # 如果 b 是 0 會崩潰

好例子:

def divide(a, b):
    if b == 0:
        raise ValueError("除數不能為 0")
    return a / b

建議:使用 try-catch 或條件檢查,並給予有意義的錯誤訊息。

7. 保持簡單(KISS - Keep It Simple, Stupid)

原則:不要過度設計,選擇最直接的解決方案。
壞例子:

const result = ((arr) => arr.map((x) => x * 2).reduce((a, b) => a + b, 0))(
  numbers
);

好例子:

let sum = 0;
for (let num of numbers) {
  sum += num * 2;
}

建議:優先考慮可讀性而非炫技。

總結

Clean code 的核心是可讀性、可維護性和簡潔性。你可以參考 Robert C. Martin 的《Clean Code》一書,裡面有更詳細的指導。實務上,建議:

  1. 寫完程式碼後重新審視,問自己:「半年後的我能看懂嗎?」
  2. 請同事 code review,聽取外部意見。
  3. 多練習,隨著經驗累積,你的程式碼自然會更乾淨。

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以邮件至 kimfei2014@gmail.com
github