hax的技术部落格

Return of Hax

$X
可能自从prototype引入$()后,使用$起头的短名字就成为风潮。随便列举如下:

prototype:

$(id, ...)  基本上是document.getElementById的缩写
$A(a)  转换到Array
$R(...)  产生一个Range
$H(h)  产生一个Hash
$F(c)  返回form control的值

jQuery:

$(css)  根据css selector查询
$(xpath)  根据xpath查询
$(element)  返回wrap后的元素
$.get()  http get
$.post()  http post

多数js toolkit或者框架都沿袭prototype的道路,例如atlas。不过linb似乎走的更远。

linb:

$d$
$h$
$ID$
$SC$
$CLASS$
$thread$
$E$
$DD$
...
除此之外还有:
转型
_.A
_.B
_.D
_.F
_.H
_.N
_.S
判断类型
_.isA
_.isB
_.isD
_.isF
_.isH
_.isN
_.isS
其中,A表示Array,B表示Boolean,D表示?(一时忘记了),F表示Function,H表示Hash,N表示Number,S表示String。

一般而言,为脚本提供一些短名字是很有价值的。但这只限于最常用的功能,prototype的例子便是如此。如range,虽然一般js很少用range,但prototype受到ruby的影响很大,故会大量使用range,为其找一个$R的缩写也是情理之中。

反观linb,虽然从A到S等缩写还算贴切,但对于$和_的过度使用就有些走火入魔。特别是$xxx$,在cvs和svn中,$xxx$常作特别用途,如$Id$来插入id。

此外$和_在js社区来说,还有一些用法约定。例如_开头的通常表示private,$开头的通常表示内部参数或者具体实现的细节(如dean edwards的压缩器就是如此),或者用$开头来避免与关键字冲突。如果没有适当的理由,最好不要破坏这种惯例。当然prototype建立了一个新的 惯例,即用$X($后跟一个大写字符)来作为最常用函数的缩写。但是不是谁都能做到创立新的惯例的。

我们都知道代码的清晰性比单纯的代码长短更重要。短名字再精巧,也是需要人记忆的。如果一个人有兴趣来选择linb,必然会有先看看example,但是 example中充斥着大量的$x$或者_.X之类的符号,对不熟悉的人来说形同天书。这样的学习曲线,必然会影响linb的推广。况且$和_都是需要 shift才能输入的字符,考虑这一点,$E$比Event,_.isA比isArray的写法又有什么优势?

一个较为合理的方式是,将$X作为一个长名字的缩写,使用者可以用长名字,也可以使用缩写。这样的缩写不宜太多,特别是没有必要像分果果一样给26个字母都安一个缩写功能。

linb还存在一些其他问题,我会另文讨论。





 
阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

$X

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭