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