原文:https://github.com/ryanmcdermott/clean-code-javascript#variables
目录
1、变量
2、函数
3、对象和数据结构
4、类
6、测试
7、并发
8、错误处理
9、格式化
10、注释
一、变量
1、使用可查找的名字
Bad: // 86400000 是代表什么?什么意思? setTimeout(blastOff, 86400000); Good: // 用const将其声明为一个常量 const MILLISECONDS_IN_A_DAY = 86400000; setTimeout(blastOff, MILLISECONDS_IN_A_DAY);
2、使用解释性变量
Bad: const address = 'One Infinite Loop, Cupertino 95014'; const cityZipCodeRegex = /^[^,\]+[,\s]+(.+?)s*(d{5})?$/; //正则匹配得到的两个参数代表什么 saveCityZipCode(address.match(cityZipCodeRegex)[1], address.match(cityZipCodeRegex)[2]); Good: //两个参数代表城市和邮编 const address = 'One Infinite Loop, Cupertino 95014'; const cityZipCodeRegex = /^[^,\]+[,\s]+(.+?)s*(d{5})?$/; const [, city, zipCode] = address.match(cityZipCodeRegex) || []; saveCityZipCode(city, zipCode);
3、避免心理映射,即避免缩写
Bad: const locations = ['Austin', 'New York', 'San Francisco']; //用l做参数 locations.forEach((l) => { doStuff(); doSomeOtherStuff(); // ... // ... // ... // l 是什么? dispatch(l); });
Good: const locations = ['Austin', 'New York', 'San Francisco'];
//使用全拼location locations.forEach((location) => { doStuff(); doSomeOtherStuff(); // ... // ... // ... dispatch(location); });
4、避免重复描述 如果对象或者类名已经告诉了一些信息,这些信息不要在内部变量中重复命名
Bad: //声明了一个Car对象,内部再次命名carMake等 const Car = { carMake: 'Honda', carModel: 'Accord', carColor: 'Blue' }; function paintCar(car) { //一看就重复了 car.carColor = 'Red'; } Good: //声明了一个car对象,则它的color、make等都是属于car的,无需重复声明 const Car = { make: 'Honda', model: 'Accord', color: 'Blue' }; function paintCar(car) { car.color = 'Red'; }
5、使用默认参数,避免使用之前的短路或者是条件赋默认值
注意:默认参数仅仅会对undefined的参数进行默认赋值。其他转义后的false值如‘’,“”,false,null,0,和NaN 都不会被默认参数替换。
Bad: function createMicrobrewery(name) { //条件写法如果name 是false则给到默认值Hipster Brew Co const breweryName = name || 'Hipster Brew Co.'; // ... } Good: function createMicrobrewery(breweryName = 'Hipster Brew Co.') { // ... }