• 变量
    • 使用有意义,可读性好的变量名
    • 使用 ES6 的 const 定义常量
    • 对功能类似的变量名采用统一的命名风格
    • 使用易于检索名称
    • 使用说明变量(即有意义的变量名)
    • 不要绕太多的弯子
    • 避免重复的描述
    • 避免无意义的条件判断

    变量

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

    反例:

    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. }