Skip to content

变量

使用有意义且易发音的变量名

错误示例:

javascript
const yyyymmdstr = moment().format("YYYY/MM/DD");

正确示例:

javascript
const currentDate = moment().format("YYYY/MM/DD");

为同类型变量保持词汇一致性

错误示例:

javascript
getUserInfo();
getClientData();
getCustomerRecord();

正确示例:

javascript
getUser();

采用可搜索的命名方式

我们阅读的代码量远多于编写的代码量。因此必须确保所写代码具备可读性与可搜索性。若未给变量赋予有助于理解程序的名称,将增加读者的理解成本。建议使用 buddy.jsESLint 等工具识别未命名常量。

错误示例:

javascript
// What the heck is 86400000 for?
setTimeout(blastOff, 86400000);

正确示例:

javascript
// Declare them as capitalized named constants.
const MILLISECONDS_PER_DAY = 60 * 60 * 24 * 1000; //86400000;

setTimeout(blastOff, MILLISECONDS_PER_DAY);

使用解释性变量增强可读性

错误示例:

javascript
const address = "One Infinite Loop, Cupertino 95014";
const cityZipCodeRegex = /^[^,\\]+[,\\\s]+(.+?)\s*(\d{5})?$/;
saveCityZipCode(
  address.match(cityZipCodeRegex)[1],
  address.match(cityZipCodeRegex)[2]
);

正确示例:

javascript
const address = "One Infinite Loop, Cupertino 95014";
const cityZipCodeRegex = /^[^,\\]+[,\\\s]+(.+?)\s*(\d{5})?$/;
const [_, city, zipCode] = address.match(cityZipCodeRegex) || [];
saveCityZipCode(city, zipCode);

避免心智映射

显式优于隐式

错误示例:

javascript
const locations = ["Austin", "New York", "San Francisco"];
locations.forEach(l => {
  doStuff();
  doSomeOtherStuff();
  // ...
  // ...
  // ...
  // Wait, what is `l` for again?
  dispatch(l);
});

正确示例:

javascript
const locations = ["Austin", "New York", "San Francisco"];
locations.forEach(location => {
  doStuff();
  doSomeOtherStuff();
  // ...
  // ...
  // ...
  dispatch(location);
});

避免添加不必要的上下文

若类/对象名称已包含相关信息,则变量名中不应重复该上下文

错误示例:

javascript
const Car = {
  carMake: "Honda",
  carModel: "Accord",
  carColor: "Blue"
};

function paintCar(car, color) {
  car.carColor = color;
}

正确示例:

javascript
const Car = {
  make: "Honda",
  model: "Accord",
  color: "Blue"
};

function paintCar(car, color) {
  car.color = color;
}

优先使用默认参数而非短路求值或条件判断

默认参数通常比短路求值更为简洁。需注意的是,默认参数仅对undefined值生效,其他'假值'如''falsenull0NaN不会被替换。

错误示例:

javascript
function createMicrobrewery(name) {
  const breweryName = name || "Hipster Brew Co.";
  // ...
}

正确示例:

javascript
function createMicrobrewery(name = "Hipster Brew Co.") {
  // ...
}