编码风格
2016-06-18 11:59
197 查看
编码风格 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 Guide
相关文章推荐
- 关于viewpager翻页时的小问题
- 最基础的函数模板的的应用
- jstl中,c:set 设置的值在jsp:include 的页面失效
- 安装和配置 Oozie
- QT线程池实验研究与分析(QThread与和QThreadPool + QRunnable使用上的区别)
- STM32之中断
- Codeforces Round #358 (Div. 2) D. Alyona and Strings
- 当Android Studio 2.1.2 遇到 『No Debuggable Applications』时,终极解决方案!
- 内存泄漏和内存溢出的区别
- 内存泄漏和内存溢出的区别
- viewDidLoad, viewWillDisappear, viewWillAppear等区别及各自的加载顺序
- 内存泄漏和内存溢出的区别
- HTML的attribute和DOM的property
- Codeforces Round #358 (Div. 2) D
- 第十六周学习进度条
- 开源C++网络库
- Nginx+Tomcat+Memcached负载均衡集群服务搭建
- 简单的运算符重载
- C++之 继承
- java 注解Annotation