变量

使用有意义,可读性好的变量名

反例:

  1. var yyyymmdstr = moment().format('YYYY/MM/DD');

正例:

  1. var yearMonthDay = moment().format('YYYY/MM/DD');

使用 ES6 的 const 定义常量

反例中使用”var”定义的”常量”是可变的。

在声明一个常量时,该常量在整个程序中都应该是不可变的。

反例:

  1. var FIRST_US_PRESIDENT = "George Washington";

正例:

  1. const FIRST_US_PRESIDENT = "George Washington";

对功能类似的变量名采用统一的命名风格

反例:

  1. getUserInfo();
  2. getClientData();
  3. getCustomerRecord();

正例:

  1. getUser();

使用易于检索名称

我们需要阅读的代码远比自己写的要多,使代码拥有良好的可读性且易于检索非常重要。阅读变量名晦涩难懂的代码对读者来说是一种相当糟糕的体验。
让你的变量名易于检索。

反例:

  1. // 525600 是什么?
  2. for (var i = 0; i < 525600; i++) {
  3. runCronJob();
  4. }

正例:

  1. // Declare them as capitalized `var` globals.
  2. var MINUTES_IN_A_YEAR = 525600;
  3. for (var i = 0; i < MINUTES_IN_A_YEAR; i++) {
  4. runCronJob();
  5. }

使用说明变量(即有意义的变量名)

反例:

  1. const cityStateRegex = /^(.+)[,\\s]+(.+?)\s*(\d{5})?$/;
  2. saveCityState(cityStateRegex.match(cityStateRegex)[1], cityStateRegex.match(cityStateRegex)[2]);

正例:

  1. const ADDRESS = 'One Infinite Loop, Cupertino 95014';
  2. var cityStateRegex = /^(.+)[,\\s]+(.+?)\s*(\d{5})?$/;
  3. var match = ADDRESS.match(cityStateRegex)
  4. var city = match[1];
  5. var state = match[2];
  6. saveCityState(city, state);

不要绕太多的弯子

显式优于隐式。

反例:

  1. var locations = ['Austin', 'New York', 'San Francisco'];
  2. locations.forEach((l) => {
  3. doStuff();
  4. doSomeOtherStuff();
  5. ...
  6. ...
  7. ...
  8. // l是什么?
  9. dispatch(l);
  10. });

正例:

  1. var locations = ['Austin', 'New York', 'San Francisco'];
  2. locations.forEach((location) => {
  3. doStuff();
  4. doSomeOtherStuff();
  5. ...
  6. ...
  7. ...
  8. dispatch(location);
  9. });

避免重复的描述

当类/对象名已经有意义时,对其变量进行命名不需要再次重复。

反例:

  1. var Car = {
  2. carMake: 'Honda',
  3. carModel: 'Accord',
  4. carColor: 'Blue'
  5. };
  6. function paintCar(car) {
  7. car.carColor = 'Red';
  8. }

正例:

  1. var Car = {
  2. make: 'Honda',
  3. model: 'Accord',
  4. color: 'Blue'
  5. };
  6. function paintCar(car) {
  7. car.color = 'Red';
  8. }

避免无意义的条件判断

反例:

  1. function createMicrobrewery(name) {
  2. var breweryName;
  3. if (name) {
  4. breweryName = name;
  5. } else {
  6. breweryName = 'Hipster Brew Co.';
  7. }
  8. }

正例:

  1. function createMicrobrewery(name) {
  2. var breweryName = name || 'Hipster Brew Co.'
  3. }