QWrap代码规范化经历
花了几天时间,对QWrap的代码,都努力按jslint的规范调整了下。
规范化后,看起来还是挺爽的。
因为子龙同学提供的自动格式化与规范检查的集成工具,这个工作顺利了好多。
美中的足的也有一些问题,主要有:
1。要想完全遵循规范,貌似难度很大,所以,只能放弃“0错误”的追求了。
2。被认为是容易引起误解的用法:
a && b || c ----》》》(a && b) || c
小评:加括号后看起来更清晰,让那些不明白&&与||优先级的同学也能轻松看懂。不过要多写一个括号,感觉有点可惜。
var a = function(){}(); ----》》》var a = (function(){}());
小评:在外面套一个括号,以防止看代码的同学误以为a是一个function,而不是一个function的执行结果。
3。怪异用法之“在需要boolean值的地方用赋值”。
while (el = el.nextSibling) {
//...
}
小评:规范的初衷,可能是防止用户把 “==”误写成“=”。
不过,把赋值结果当boolean,在历史上的曾是怪异,可后来普及了,已经不怪异了。并且这是一种现实中很有实用意义的写法。只好忽略检查报告中的错误了。
4。怪异用法之“表达式代替if”。
"a && a();" vs "if(a) a();"
小评:表达式替代if,写起来很简洁,可惜也被jslint鄙视了。
同上,当怪异已经普及时,就不能称怪异了。
5。怪异用法之“简洁类型转换”
var s=obj+''; //转换成字符串
var i=new Date()*1; //转换成数值
小评:竟然被jslint鄙视了。因为加空字符串,与乘1,被当作了无意义的操作。
6。怪异用法之“长字符串拼接”
var sStyle = '#cal_wrap{text-align:center;color:#555;background-color:#f2f2f2;border:1px solid #ccc;zoom:1}\
#cal_wrap button,#cal_wrap select {font-size:12px;}\
#cal_hd{padding:5px;}';
这一种拼接写起来比较省,并且排版也比较漂亮,可是还是被鄙视了。叹一声。
7。单句也需要大括号。
if (a) a(); ----》》》if (a) {a(); }
小评:不要大括号也很清晰啊。虽说加大括号也有很多好处,但是那些好处在很多情况下是过度假想,这让人很受伤。
以上,其中的2、7两条,理论是可以由压缩工具清除多为了满足规范要求而加上的多余的括号或花括号,可惜YUI的压缩没有做这样的清除。
4、5两条,要改代码还是,心里还是挺不爽的。
QWrap的代码中,出于私心考虑,还挺在意dom/selector.js的大小的,所以没有加多余的括号等。所有代码规范化后,错误数已经只有七十多个了。其中selector中有五十几个。
错误数与0错误的理想有些差距,不过已经在可接受范围了。先就这样吧。
附:
QWrap的core_dom部分代码:
http://dev.qwrap.com/resource/js/_docs/_jk/js/apps/core_dom_youa.js
规范化后,看起来还是挺爽的。
因为子龙同学提供的自动格式化与规范检查的集成工具,这个工作顺利了好多。
美中的足的也有一些问题,主要有:
1。要想完全遵循规范,貌似难度很大,所以,只能放弃“0错误”的追求了。
2。被认为是容易引起误解的用法:
a && b || c ----》》》(a && b) || c
小评:加括号后看起来更清晰,让那些不明白&&与||优先级的同学也能轻松看懂。不过要多写一个括号,感觉有点可惜。
var a = function(){}(); ----》》》var a = (function(){}());
小评:在外面套一个括号,以防止看代码的同学误以为a是一个function,而不是一个function的执行结果。
3。怪异用法之“在需要boolean值的地方用赋值”。
while (el = el.nextSibling) {
//...
}
小评:规范的初衷,可能是防止用户把 “==”误写成“=”。
不过,把赋值结果当boolean,在历史上的曾是怪异,可后来普及了,已经不怪异了。并且这是一种现实中很有实用意义的写法。只好忽略检查报告中的错误了。
4。怪异用法之“表达式代替if”。
"a && a();" vs "if(a) a();"
小评:表达式替代if,写起来很简洁,可惜也被jslint鄙视了。
同上,当怪异已经普及时,就不能称怪异了。
5。怪异用法之“简洁类型转换”
var s=obj+''; //转换成字符串
var i=new Date()*1; //转换成数值
小评:竟然被jslint鄙视了。因为加空字符串,与乘1,被当作了无意义的操作。
6。怪异用法之“长字符串拼接”
var sStyle = '#cal_wrap{text-align:center;color:#555;background-color:#f2f2f2;border:1px solid #ccc;zoom:1}\
#cal_wrap button,#cal_wrap select {font-size:12px;}\
#cal_hd{padding:5px;}';
这一种拼接写起来比较省,并且排版也比较漂亮,可是还是被鄙视了。叹一声。
7。单句也需要大括号。
if (a) a(); ----》》》if (a) {a(); }
小评:不要大括号也很清晰啊。虽说加大括号也有很多好处,但是那些好处在很多情况下是过度假想,这让人很受伤。
以上,其中的2、7两条,理论是可以由压缩工具清除多为了满足规范要求而加上的多余的括号或花括号,可惜YUI的压缩没有做这样的清除。
4、5两条,要改代码还是,心里还是挺不爽的。
QWrap的代码中,出于私心考虑,还挺在意dom/selector.js的大小的,所以没有加多余的括号等。所有代码规范化后,错误数已经只有七十多个了。其中selector中有五十几个。
错误数与0错误的理想有些差距,不过已经在可接受范围了。先就这样吧。
附:
QWrap的core_dom部分代码:
http://dev.qwrap.com/resource/js/_docs/_jk/js/apps/core_dom_youa.js