一、重複代碼
重複代碼可能是最常見的代碼壞味道之一。重複代碼不僅影響可讀性,而且還會導致代碼變得臃腫和難以維護。在一些非常明顯的情況下,可以很容易地將重複代碼重構成一個函數或方法。重構代碼旨在將可重複的代碼轉移到單個位置,以減少可維護的代碼總量。
以下是一個重複代碼的例子:
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