- 变量
- 使用有意义,可读性好的变量名
- 使用 ES6 的 const 定义常量
- 对功能类似的变量名采用统一的命名风格
- 使用易于检索名称
- 使用说明变量(即有意义的变量名)
- 不要绕太多的弯子
- 避免重复的描述
- 避免无意义的条件判断
变量
使用有意义,可读性好的变量名
反例:
var yyyymmdstr = moment().format('YYYY/MM/DD');
正例:
var yearMonthDay = moment().format('YYYY/MM/DD');
使用 ES6 的 const 定义常量
反例中使用”var”定义的”常量”是可变的。
在声明一个常量时,该常量在整个程序中都应该是不可变的。
反例:
var FIRST_US_PRESIDENT = "George Washington";
正例:
const FIRST_US_PRESIDENT = "George Washington";
对功能类似的变量名采用统一的命名风格
反例:
getUserInfo();getClientData();getCustomerRecord();
正例:
getUser();
使用易于检索名称
我们需要阅读的代码远比自己写的要多,使代码拥有良好的可读性且易于检索非常重要。阅读变量名晦涩难懂的代码对读者来说是一种相当糟糕的体验。
让你的变量名易于检索。
反例:
// 525600 是什么?for (var i = 0; i < 525600; i++) {runCronJob();}
正例:
// Declare them as capitalized `var` globals.var MINUTES_IN_A_YEAR = 525600;for (var i = 0; i < MINUTES_IN_A_YEAR; i++) {runCronJob();}
使用说明变量(即有意义的变量名)
反例:
const cityStateRegex = /^(.+)[,\\s]+(.+?)\s*(\d{5})?$/;saveCityState(cityStateRegex.match(cityStateRegex)[1], cityStateRegex.match(cityStateRegex)[2]);
正例:
const ADDRESS = 'One Infinite Loop, Cupertino 95014';var cityStateRegex = /^(.+)[,\\s]+(.+?)\s*(\d{5})?$/;var match = ADDRESS.match(cityStateRegex)var city = match[1];var state = match[2];saveCityState(city, state);
不要绕太多的弯子
显式优于隐式。
反例:
var locations = ['Austin', 'New York', 'San Francisco'];locations.forEach((l) => {doStuff();doSomeOtherStuff();.........// l是什么?dispatch(l);});
正例:
var locations = ['Austin', 'New York', 'San Francisco'];locations.forEach((location) => {doStuff();doSomeOtherStuff();.........dispatch(location);});
避免重复的描述
当类/对象名已经有意义时,对其变量进行命名不需要再次重复。
反例:
var Car = {carMake: 'Honda',carModel: 'Accord',carColor: 'Blue'};function paintCar(car) {car.carColor = 'Red';}
正例:
var Car = {make: 'Honda',model: 'Accord',color: 'Blue'};function paintCar(car) {car.color = 'Red';}
避免无意义的条件判断
反例:
function createMicrobrewery(name) {var breweryName;if (name) {breweryName = name;} else {breweryName = 'Hipster Brew Co.';}}
正例:
function createMicrobrewery(name) {var breweryName = name || 'Hipster Brew Co.'}
