编码风格

编码风格 Sublime Text 设置 perfernces > Settings - User

# 空格缩进
使用2个空格而不是 tab 来进行代码缩进,同时绝对不要混用空格和 tab 。
"tab_size": 2,// Tab键制表符宽度为2空格
"translate_tabs_to_spaces": true, // // 代码 tab 对齐转换为空格对齐

# 换行
使用 UNIX 风格的换行符 (\n),同时在每一个文件的结尾添加一个换行符。 Windows 风格的换行符 (\r\n) 是绝对禁止出如今任何项目中的。
"default_line_ending": "unix",

# 去除行末尾的多余空格
"trim_trailing_white_space_on_save": true

# 每行80个字符
限制你每行代码不超过80个字符。尽管如今的显示器愈来愈大,可是你的大脑并无变大,而且你还能够把你的大显示器切分红多屏( view > Layout > Columns 2 )来显示。

# 使用单引号
除非编写.json文件,其余时候都请用单引号包裹 '字符串' 。
var foo = 'bar';

# 使用分号
是否使用分号,在社区争论已久。可是,当能够用廉价的语法来消除一些可能引入的错误的时候,请当一个保守派。

# 大括号位置
请把你的全部的左大括号都放在语句开始的这一行、请务必在条件判断先后都添加一个空格。
if (true) {
  console.log('winning');
}

# 每一个变量声明都带一个 var
每一个变量声明都带一个 var ,这样删除或者调整变量声明的顺序会更加容易。 不要把变量都声明在最前面,而是声明在它最有意义的地方。
var keys   = ['foo', 'bar'];
var values = [23, 42];

var object = {};
while (items.length) {
  var key = keys.pop();
  object[key] = values.pop();
}

# 变量、属性和函数名都采用小驼峰
变量、属性和函数的命名风格都须要遵循小驼峰风格。
同时全部的命名都是有意义的。
尽可能避免用单字符变量和少见单词来命名。
var adminUser = db.query('SELECT * FROM users ...');

# 类名采用大驼峰
类名都采用大驼峰风格来命名。
function BankAccount() {
}

# 用大写来标识常量
常量变量和对象的静态常量属性都须要特殊代表,经过所有大写的方式来代表。
const SECOND = 1 * 1000;

function File() {
}
File.FULL_PERMISSIONS = 0777;

# 对象、数组的建立
使用尾随逗号,尽可能用一行来声明。
只有在编译器不接受的状况下才把对象的 key 用单引号包裹。 
使用字面表达式,用 {}, [] 代替 new Array, new Object。
var a = ['hello', 'world'];
var b = {
  good: 'code',
  'is generally': 'pretty',
};

# 使用 === 比较符
使用 === 操做符来进行比较操做,它会彻底按照你的指望来执行。
写代码并非在背那些 stupid rules 
var a = 0;
if (a === '') {
  console.log('winning');
}

# 三元操做符分多行
三元操做符不该该写在一行,将它分割到多行。
var foo = (a === b) 
    ? 1
    : 2;

# 不要扩展内建类型
不要扩展 javascript 内建对象的方法。未来的你会感谢你这个作法的。
Array.prototype.empty = function(){
    return !this.length;
}
var a = [];
if (a.empty()) {
    console.log('losing');
}
// Right
var a = [];
if (!a.length) {
    console.log('winning');
}

# 使用有意义的判断条件
全部复杂的条件判断都须要赋予一个有意义的名字或方法
var isValidPassword = password.length >= 4 && /^(?=.*\d).{4,}$/.test(password);

if (isValidPassword) {
  console.log('winning');
}

# 写精简的函数
保持你的函数尽量的精简。 
一个好的函数应该可以在幻灯片上、一屏显示,而且让坐在教室最后一排的人看清楚。
别再去数你的每个函数并控制在15行之内了。

# 尽早的从函数中返回
为了不深刻嵌套的 if 语句,请尽早的从函数中返回。
// Wrong
function isPercentage(val) {
  if (val >= 0) {
    if (val < 100) {
      return true;
    } else {
      return false;
    }
  } else {
    return false;
  }
}
// Right
function isPercentage(val) {
  if (val < 0) {
    return false;
  }

  if (val > 100) {
    return false;
  }

  return true;
}
精简方案( 与或非请熟练运用 )
function isPercentage(val) {
  var isInRange = (val >= 0 && val <= 100);
  return isInRange;
}

# 给你的闭包命名
请尽可能给你的闭包、匿名函数命名。 
这让人知道你在乎这个函数。
更重要的是,这将会产生可读性更好的堆栈跟踪和CPU调用信息等。
req.on('end', function onEnd() {
  console.log('winning');
});

# 不要嵌套闭包
使用闭包,可是不要嵌套他们,不然你的代码将会一团糟。
setTimeout(function() {
  client.connect(afterConnect);
}, 1000);

function afterConnect() {
  console.log('winning');
}

# 使用单行注释风格
不论是单行注释仍是多行注释,都使用 // 。 
同时请尝试在更高层次来编写注释(解释函数总体的思路), 只在解释一些难以理解代码的时候添加注释,而不是给一些琐碎的东西加上注释。

# Object.preventExtensions 方法用于锁住对象属性,使其不可以拓展,也就是不能增长新的属性,可是属性的值仍然能够更改,也能够把属性删除
# Object.seal 把对象密封,也就是让对象既不能够拓展也不能够删除属性\单数属性值仍然能够修改
# Object.freeze 彻底冻结对象,在seal的基础上,属性值也不能够修改
# with
# eval
这一堆屎同样的东西,你永远都不会须要他们。


# Getters 和 Setters
不要使用 setters ,他们会引起一些使用你的代码的人没法解决的问题。 
当没有反作用的时候,可使用 getters,例如提供一个集合类的长度属性的时候。


# 空格
在全部的操做符先后都添加空格。
function 关键字后面添加空格。
var add = function (a, b) {
  return a + b;
};

# 文件命名
单词之间使用 _ underscore 来分割。
若是你不想暴露某个文件给用户,你也能够用 _ 来开头。
child_process.js
string_decoder.js
_linklist.js

Style Guidejavascript

相关文章
相关标签/搜索