以下规则适用于 js、ts文件。
尽量简单语义化,明确它的用途,避免过度任意的简写。
普通命名采用小驼峰式命名。
USER_NAME
、USER_AGE
。USER_NAME
、USER_AGE
。User
、UserManager
。getUser
、getUserInfo
。命名需要符合语义化,可以采用加上动词前缀:
can
判断是否可执行某个动作has
判断是否含有某个值is
判断是否为某个值get
获取某个值set
设置某个值ajax
请求相关缩进与下一行代码保持一致。
if (condition) {
// if you made it here, then all security checks passed
allowed();
}
遵循单行注释,采用 jsdoc
风格。
/**
* 一个带参数的函数
* @func
* @desc 一个带参数的函数,用于例子
* @param {string} a - 参数a
* @param {string} b - 参数b
* @return {string} 结果
*/
function func(a, b) {
//...
}
在一般场景下,代码的可读性、正确性优先,基本上不会遇到性能瓶颈。
// bad (albeit way faster)
const arr = [1, 2, 3, 4];
const len = arr.length;
var i = -1;
var result = [];
while (++i < len) {
var n = arr[i];
if (n % 2 > 0) continue;
result.push(n * n);
}
// good
const arr = [1, 2, 3, 4];
const isEven = n => n % 2 == 0;
const square = n => n * n;
const result = arr.filter(isEven).map(square);
一个类只做一件事,一个方法只做一件事,一个变量只做一件事。