一、重复代码
重复代码可能是最常见的代码坏味道之一。重复代码不仅影响可读性,而且还会导致代码变得臃肿和难以维护。在一些非常明显的情况下,可以很容易地将重复代码重构成一个函数或方法。重构代码旨在将可重复的代码转移到单个位置,以减少可维护的代码总量。
以下是一个重复代码的例子:
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/n/238037.html