一、重複代碼
重複代碼可能是最常見的代碼壞味道之一。重複代碼不僅影響可讀性,而且還會導致代碼變得臃腫和難以維護。在一些非常明顯的情況下,可以很容易地將重複代碼重構成一個函數或方法。重構代碼旨在將可重複的代碼轉移到單個位置,以減少可維護的代碼總量。
以下是一個重複代碼的例子:
if (x > 1) {
m = "greater than one";
// 重複代碼
console.log(m);
} else {
m = "less than or equal to one";
// 重複代碼
console.log(m);
}
可以重構為:
if (x > 1) {
m = "greater than one";
} else {
m = "less than or equal to one";
}
console.log(m);
二、過長的代碼行
過長的代碼行往往會導致代碼不易讀取,並且難以維護。過長的代碼行更容易出現錯誤,因為程序員可能會因為缺少足夠的上下文而遺漏某些代碼。一個好的規則是不要超過80個字元。如果一行代碼超過80個字元,可以嘗試將代碼拆分成多行。
以下是過長的代碼行的一個例子:
let someVariable = thisIsAVeryLongFunctionNameThatHasWayTooManyCharacters(x, y, z, a, b, c);
可以拆分成:
let someVariable = thisIsAVeryLongFunctionNameThatHasWayTooManyCharacters(
x, y, z,
a, b, c
);
三、魔數
在代碼中使用數字,稱為魔數。魔數在代碼中增加了不必要的複雜性,並且不利於代碼的維護。魔數的最佳解決方案是將它們轉換為有意義的常量或枚舉。這不僅使代碼更容易閱讀和理解,而且還避免了因某個數字改變而導致錯誤的代碼問題。
以下是一個魔數的例子:
if (score < 60) {
console.log("你的成績是 D");
} else if (score < 70) {
console.log("你的成績是 C");
} else if (score < 80) {
console.log("你的成績是 B");
} else if (score < 90) {
console.log("你的成績是 A");
} else {
console.log("你的成績是 A+");
}
可以重構成:
const GRADE_D = 60;
const GRADE_C = 70;
const GRADE_B = 80;
const GRADE_A = 90;
if (score < GRADE_D) {
console.log("你的成績是 D");
} else if (score < GRADE_C) {
console.log("你的成績是 C");
} else if (score < GRADE_B) {
console.log("你的成績是 B");
} else if (score < GRADE_A) {
console.log("你的成績是 A");
} else {
console.log("你的成績是 A+");
}
四、過長的函數
過長的函數不僅難以閱讀,還更難以測試和維護。一個長函數通常會執行太多任務,並且很難分離出單獨的功能。分解長函數的最佳方法是為每個任務創建單獨的函數。
以下是一個過長的函數的例子:
function calculateBill(price, quantity, tax, discount) {
let totalPrice = price * quantity;
totalPrice = totalPrice + totalPrice * tax;
if (discount > 0) {
totalPrice = totalPrice - discount;
}
return totalPrice;
}
可以拆分為:
function calculatePrice(price, quantity) {
return price * quantity;
}
function calculateTax(amount, tax) {
return amount + amount * tax;
}
function calculateDiscount(amount, discount) {
return discount > 0 ? amount - discount : amount;
}
function calculateBill(price, quantity, tax, discount) {
let totalPrice = calculatePrice(price, quantity);
totalPrice = calculateTax(totalPrice, tax);
totalPrice = calculateDiscount(totalPrice, discount);
return totalPrice;
}
五、長參數列表
長參數列表不僅難以閱讀和維護,還可能會導致錯誤。最佳做法是盡量減少參數列表中的參數數量。如果可能,可以將多個參數組合在一起,創建一個單獨的對象來傳遞它們。
以下是一個長參數列表的例子:
function calculateBill(price, quantity, taxRate, discountRate, shippingMethod) {
// ...
}
可以重構成:
function calculateBill(options) {
const {
price,
quantity,
taxRate,
discountRate,
shippingMethod
} = options;
// ...
}
calculateBill({
price: 100,
quantity: 2,
taxRate: 0.15,
discountRate: 0.2,
shippingMethod: 'post'
});
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/238037.html
微信掃一掃
支付寶掃一掃