新版Angular中使用的Typescript书写规范非常恼人,比如默认会启用no-trailing-whitespace这样的选项。官方对此的说明是为了配合GIT的使用规范。
虽然这种规则在规范程序员的代码风格方面有一定作用,但是对于已经形成自身风格的人而言,纯粹是多此一举。比如本人在Oracle实习期间,看到后端项目中Java代码的风格也是因人而异,比如有些人喜欢在方法之间间隔一行,有些人就不将方法分隔开;有些会将不同作用的程序段用空行隔开;有些不会在等号赋值左右加上空格……但这些都不会影响代码的阅读。个人认为,只要缩进得当,风格稳定,并且遵循一定的规范,都不会很大程度上影响阅读。而TS在这些方面的吹毛求疵虽然非常严格地规范了代码风格,却也影响了写代码的效率。(使用文本编辑器的例外)
说点题外话,先前在Ionic框架上做Hybrid App的时候使用的TSLint还是比较舒服的,虽然没有去注意该团队是否已对TSLint进行个性化设置。
以下将几个比较麻烦的选项说明一下:
1.尾部空格检测
"no-trailing-whitespace": false,
这个一定要选择false,要不然每行代码后面都不能有空格,包括换行以后产生的空格。这对喜欢将不同功能程序段用空行分割的人而言简直是噩梦。
2.行内检测
"one-line": [ true, "check-open-brace", "check-catch", "check-else", "check-whitespace" ],
这个里面可以自行配置自身需要的,比如check-whitespace这项就会要求函数名,参数表和函数段开头的大括号之间要有空格。当然也可以设置为false,将这个功能完全禁用。
3.关键字var
"no-var-keyword": true,
如果这一项启用的话,就不能在程序段中使用var来生成变量。本身ES6提供的let确实很好用,但如果需要利用var的特性(比如变量提升)来实现一些程序段的话,那就不能禁用。
4.注释行中的空格
"comment-format": [ true, "check-space" ],
如果check-space这一项存在,那么注释行的开头必须要加上一个空格。这个对于使用英文注释的人来说,没有多大影响,但是中文话就没有必要。注释毕竟是区别于代码段的,要使用如何的书写格式应当自己来决定。去掉这一项,或者将整个commet-format的值改为false,就可以将其禁用。
5.空格在其他部分的设置
"whitespace": [ true, "check-branch", "check-decl", "check-operator", "check-separator", "check-type" ],
whitespace这一项决定了在哪些情况下必须先插入空格,然后写入自己的代码。比如check-separator这一项就会要求在初始化数组的时候,相邻元素间不仅要用“,”分隔,还需要在其之后加入空格。
6.引用规范
"quotemark": false,quotemark规定了引用符号的格式,比如在true,'single'的模式下,就会强制规定引用时必须使用单引号。然而,即使是WebStorm默认的引用格式也是双引号,这样就必须修改IDE的引用格式,或者将这个规则禁用,否则每次引用都要手动将双引号改为单引号。
7.const偏好
"prefer-const": false,这一项会在变量没有在程序段中重新赋值的时候提示使用const,这么做可以优化性能。然而,这样的设定也会引发一些问题,毕竟我们在设计的时候会考虑到后期对某些变量可能会进行修改。建议在初期开发完成,程序处理逻辑趋于稳定,进入性能优化的环节后再把这一项启用,协助检查哪些变量可以用const优化。
其他的后续继续补充。