# 命名规则
23.1 避免用一个字母命名,让你的命名可描述。 eslint:
id-length
(opens new window)// bad function q() { // ... } // good function query() { // ... }
23.2 用小驼峰式命名你的对象、函数、实例。 eslint:
camelcase
(opens new window)// bad const OBJEcttsssss = {}; const this_is_my_object = {}; function c() {} // good const thisIsMyObject = {}; function thisIsMyFunction() {}
23.3 用大驼峰式命名类。 eslint:
new-cap
(opens new window)// bad function user(options) { this.name = options.name; } const bad = new user({ name: 'nope', }); // good class User { constructor(options) { this.name = options.name; } } const good = new User({ name: 'yup', });
23.4 不要用前置或后置下划线。 eslint:
no-underscore-dangle
(opens new window)Why? JavaScript 没有私有属性或私有方法的概念。尽管前置下划线通常的概念上意味着“private”,事实上,这些属性是完全公有的,因此这部分也是你的API的内容。这一概念可能会导致开发者误以为更改这个不会导致崩溃或者不需要测试。 如果你想要什么东西变成“private”,那就不要让它在这里出现。
// bad this.__firstName__ = 'Panda'; this.firstName_ = 'Panda'; this._firstName = 'Panda'; // good this.firstName = 'Panda';
23.5 不要保存引用
this
, 用箭头函数或函数绑定——Function#bind (opens new window).// bad function foo() { const self = this; return function () { console.log(self); }; } // bad function foo() { const that = this; return function () { console.log(that); }; } // good function foo() { return () => { console.log(this); }; }
22.9 简称和缩写应该全部大写或全部小写。
Why? 名字都是给人读的,不是为了适应电脑的算法的。
// bad import SmsContainer from './containers/SmsContainer'; // bad const HttpRequests = [ // ... ]; // good import SMSContainer from './containers/SMSContainer'; // good const HTTPRequests = [ // ... ]; // best import TextMessageContainer from './containers/TextMessageContainer'; // best const Requests = [ // ... ];