统一下代码的一些风格规范,其一是好看啊,看着爽呗, 其二是容易排错吧,可能还有后续
先学会看
目前市面上有一套完备体系的Javascript编程规范有哪些?Airbnb JavaScript Style Guide Google JavaScript Style Guide Idiomatic JavaScript Style Guide JavaScript Standard Style Guide jQuery JavaScript Style Guide
抓重点: 这么多要看到猴年马月去,找一个对的上眼的深入学习下,切勿都学,没这个必要,粗略扫读,有针对性阅读! 再学会写备注:笔者菜鸡一枚很难道尽到底为什么这样写是对的或者错的,所以楼下统一用“美”,“矬”,表达我的主观感受。 注释对于文件最头部的注释/** * @Name: template.js * @Description: js模板 * @Author: Jiangtao Zheng * @create: 2019-05-28 10:27 * @update: 2019-05-28 10:27 */ 可能还有些版本啊,贡献者啊,简要功能罗列不举例了。 对于文件方法的注释 /** * @method gaoExplain * @description 我创建了一个方法返回a方乘以b方,我把它命名为gaoExplain * @param {number} a a变量, number类型 * @param {number} b b变量, number类型 * @returns {number} 返回一个number类型 */ function gaoExplain (a, b) { return a * b * a * b; }
gaoExplain(1, 2) //调用的时候就不需要空格了
其他的注释怎么开心怎么来吧! 声明命名不外乎要么驼峰式、要么下划线式,要么杠 文件中相关内容命名函数和变量: gaoFunc , gaoVariable 类名和枚举类型: GaoClass , GaoEnum 类方法:gaoClassFunc 常量:GAO_CONFIG
文件命名注意用_ 分割不是用- ,然后小写. gao_filename.js
_gao_filename.js
计算美 var str = 'hello' + 'world'; 矬 var str='hello'+'world';
var str2 = 'hello'+'world';
var str3 = 'hello' +'world'; 优化纠结到底末尾加不加";"? 不加主要是想偷懒,因为JavaScript会自动添加,加了主要是习惯了,记不住我还是加吧!抓重点就是句末要加。 什么时候用单引号'',什么时候用双引号"",什么时候用模板字符串``? 一般情况都用'' 美 var http = require('http'); var str = 'hello world'; 矬 var http = require("http"); var str = "hello world"; 写JSON的时候用"" 美 { "name": "ataola", "age": 23, "address": "浙江杭州" } 后面就不是矬不矬的问题了,错!!! { 'name': 'ataola', 'age': 23, 'address': '浙江杭州' } 楼上两个不好显示特定句子或者写起来太复杂的时候 美 var name = 'ataola'; var age = 24; var address = '浙江杭州'; console.log(`Hello, My name is ${name}, I am ${age} and I live in ${address}!`) 矬 var name = 'ataola'; var age = 24; var address = '浙江杭州'; console.log('Hello, My name is ' + name + ', I am ' + age + ' and I live in ' + address + '!')
一个tab到底是空两个还是四个好? 一个tab键,两个空格(node 源码及module 采用的标准)。 判断语句if括号后面到底跟不跟"{"? 美 if(awake) { console.log("do something!"); } 也美吧,个人觉得不是很矬 if(awake) { console.log("do something!"); } 因为Javascript会自动添加句末的分号,导致一些难以察觉的错误。 用"===" 还是"==" 好?能用"===" 就用"===" ,严谨一点嘛,"==" 会进行隐式转换,注意0 undefined null false true ,但有时我们可能讨巧的做法是就用到了隐式转换,听着像是讲了句屁话。 创建对象或者数组写{} 或者[] 还是new Array 或者new Object 能少写就少写嘛!浓缩是精华,少写一点你不开心吗?,同样的 new String , new Boolean , new Number 不要这么写,new Date , new Regexp 这两个可以有 美 var arr = ['hello', 'world']; var obj = { "name": "ataola", "age": 23 } 矬 var arr = [ 'hello', 'world' ];
var obj = { "name": "ataola" ,"age": 23 } 什么时候用with 和eval
eval它可以计算一个字符串的值就比如eval('1+2+3')能够得到6,但具体场景还是不清楚,with会产生歧义,所以尽量不用吧! 仅在object/hash/map时使用, array不要用, 绝对不要用 不要把array当关联数组或者Object使用(PS: 不要用非数字的数组索引) 美 var obj = {}; obj.name = 'ataola'; obj.age =23; 矬 var arr = []; arr['name'] = 'ataola'; arr['age'] = 23; Node 的异步回调函数的第一个参数应该是错误指示 function cb(err, data , ...) {...} 做个标记,后续去思考下,目前的理解是已捕获错误,你都错了还执行这显然很不合适嘛!
类继承写法,尽管有各种方式来实现继承,但最为推荐的是Node 的标准写法 function Socket(options) { // ... stream.Stream.call(this); // ... }
util.inherits(Socket, stream.Stream); 怎么区分是一个类的私有变量? 如果你在模块中 exports 一个类,对于此类的私有成员变量,建议加上 "_" 前缀以示区分 比如说,声明多个变量时,是用多个","还是一行一个用";"呢? 变量声明时,应该每行声明一个,不应该都写在一行(尽管这被JSLint 所推荐)。 美 var express = require('express'); var logger = require('morgan'); 猥琐的美 var express = require('express'), , logger = require('morgan'); return 对象的写法美 return {
key : value;
}; 矬 return
{
key:value;
}; 等号多变量赋值好不好,形如var a = b = 2 不好!实际和期望不符 怎么创建对象合理? 不要用new命令,改Object.create() ++x/--x, x--/x++好,还是+=, -=好, 后者好, 前者容易出错 if如果你能够确定,尽量不要偷懒,请使用大括号。
参考文献cnode社区- node编程规范征集 阮一峰的网络日志 - Javascript编程风格 github-fex-team - Javascript编码规范 fengmk2 - 我的nodejs编程规范 备注:访问时已经打不开,我是查阅源代码看的,比较鸡肋 drupal - JavaScript coding standards github-iFrame - Node编码规范 github-iFrame - Node陷阱与优化 Crockford - JavaScript代码规范 相关链接Douglas Crockford博客:https://www./mckeeman.html Javascript编程风格是什么:https://www./watch?v=taaEzHI9xyY 12种不宜使用的Javascript语法:http://www./blog/2010/01/12_javascript_syntax_structures_you_should_not_use.html 关于"===" 和"==" : https:///2011/06/javascript-equality.html JavaScript Garden:http://bonsaiden./JavaScript-Garden/ 选自《Javascript筑基》系列文章 原文地址: https://github.com/ataola/JavaScript-Tsukuki/blob/master/note/code-style.md
|