编写可维护的javascript之书写风格

这么高级的标题,简单说就是,emmm写代码时可以采用的一种比较高级,可读性更强,更适合团队合作的风格~

毕竟工作的时候大部分是和同事们一起编写代码和维护,而不是单打独斗。这个时候如果每个人都保持着自己独特的风格,emmm,我觉得后继者会很头痛吧,毕竟,大家都没办法保证手上的项目能一直自己维护着。

之所以会看《编写可维护的javascript》这本书呢,是学长看了我写的代码之后建议我学习一下的(手动尴尬),好了废话说太多了,我们开始吧~

缩进层级

书上讲到了四种常用的缩进格式

//使用制表符进行缩进
if ( length ){
    doSomething()...
}

//使用两个空格进行缩进
if ( length ){
  doSomething()...
}

//使用四个空格进行缩进
if ( length ){
    doSomething()...
}

//使用8个空格进行缩进
if ( length ){
        doSomething()...
}

我个人是习惯用制表符(tab键)缩进的,但是书上说不同编译器对制表符的长度的设置不一,不同编辑器界面代码展示会有差异,所以以后会试着开始用4个空格去代替tab键吧~但我觉得使用什么方式的缩进没有标准,但是团队协作时必须要约定好相同的标准,不然将上面这四种风格杂糅在一个文件里眼睛也是太辛苦了

语句结尾

大家都知道JavaScript是一种弱语言,每行的结尾加不加号都会编译成功,但是一些特殊的情况就会编译失败,例如

function getDate() {
    return 
    {
        doSomething()...
    }
}

分析器会用以下方式分析

function getDate() {
    return ;
    {
        doSomething()...
    };
}

编译时返回结果是undefined,解决方法是把大括号提到return这行来

function getDate() {
    return {
        doSomething()...
    }
}

感觉都不是什么大问题,所以要细心,也可以养成随手加 ;的习惯呀,又规范又好看hhh~

行的长度

总结一下讲就是,作者倾向于将行长限定在80个字符

换行

一般一行超过了最大限制,我们就需要换行并且缩进两个层级,或者与赋值运算符对齐。记住每行的结尾留一个运算符,否则ASI机制有可能就给这行加一个 ‘ ;’,从而导致错误的发生。

空行

适当的空行可以增加代码的可读性,书中作者建议了这些位置用来添加空行

  • 流控制语句之前
  • 方法之间
  • 方法中局部变量与语句之间
  • 多行或单行注释之前
  • 方法内的逻辑片段之间

命名

"计算机科学只存在两个难题:缓存失效和命名"                                    —— Phil Kaerlton

一般是采用驼峰命名法或者匈牙利命名法,前者又分为大小驼峰法。

大驼峰法 (Pascal Case)每个单词的首字母都大写,例如 MaxLength

小驼峰法(Camel Case)以小写字母开头,后续每个单词的首字母都大写,例如 toLink,myFirstProgram

匈牙利命名法  在名字前以类型首字母点缀,例如 sName,iCount

1.变量和函数

尽量遵循驼峰大小写法。

变量的命名前缀应当使用名词,函数应当使用动词作为命名前缀,这样可以将两者比较好的区分。

作者提供了几个比较常用的函数动词:can,has,is,get,set

2.常量

使用全大写字母和下划线命名,例如:MAX_COUNT , URL 

也常使用大驼峰法命名常量~

3.构造函数

构造函数一般与new运算符一起使用,用来创建对象。一般遵循大驼峰法命名。例如:Person , Animal

直接量

我的理解是 就是我们常说的基本类型和引用类型。包括字符串,数字,布尔值,null和undefined,也包括对象和数组。

1.字符串

赋值时使用单双引号都是可以的

var name = "zhangsan"

var name = 'zhangsan'

在折行时有两种方式,使用‘ \ ’ 或者 ‘+’

var longString = "hello,everyone. this is your honey \
                 girl";

var longString = "hello,everyone. this is your honey "+
                 "girl";

作者更推荐使用‘ + ’号去折行哦~

2.数字

尽量不要使用以下写法,可能会引起歧义

var price = 10.
var price = .1

var price = 010

前两种是省略了小数部分或者整数部分,也可能是开发者的遗漏。

最后这个则是使用了八进制写法,已被弃用

3.null

4.undefined

3和4我不能很好的表达出来,但是就是要区分它们的适用区间,然后在使用这两个值去判断时需要谨慎一些

因为仅声明未赋值的变量打印出来也是undefined,所以尽量在未知变量声明时赋值上null ,从而保证只有变量未声明这一种情况会出现undefined。

let a; 

console.log(a) // undefined
console.log(a==null) // true
console.log(a==undefined) // true
console.log(a===null) // false
console.log(a===undefined) // true
console.log(typeof a) // undefined

// b未声明
console.log(b) // Uncaught ReferenceError: b is not defined
console.log(b===null) // false
console.log(b===undefined) // true
console.log(typeof b) // undefined

let c = null ;

console.log(a) // null
console.log(c===null) // true
console.log(c===undefined) // false
console.log(typeof c) // object

5.对象直接量

不建议先建立空对象实例,再使用属性的方式添加。而建议在声明时即写出所有的属性

var book = {
    title :"Maintainable JavaScript",
    author :"Nicholas C. Zakas"
}

6.数组直接量

不建议使用new Array来创建数组,而建议使用 “ [ ] ” 来创建数组

// 不好的写法
var arr = new Array('one','two','three');

// 好的写法
var arr = ['one','two','three'];

注释

1.单号注释

建议注释前空一行,且与下一行对齐,双斜杠后空一格

if (flag) {

    // 单行注释格式
    doSomething();
}

2.多行注释

以/*开始,以*/结束, 中间行以*开行。

if (flag) {
    
    / *
      * 多行注释格式
      * 多行注释格式
      * /
    doSomething();
}

3.何时使用注释

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值