Dojo Javascript 编程规范 规范自己的JavaScript书写(2)
setTopic(topic) // 变量 topic 为 Topic 类型的变量
11.所有的变量名 必须 使用英文名称。
12.变量如有较广的作用域(large scope),必须使用全局变量;此时可以设计成一个类的成员。相对的如作用域较小或为私有变量则使用简洁的单词命名。
13.如果变量有其隐含的返回值,则避免使用其相似的方法:
getHandler(); // 避免使用 getEventHandler()
14.公有变量必须清楚的表达其自身的属性,避免字义含糊不清,例如:
MouseEventHandler
,而非 MseEvtHdlr。
请再次注意这条规定,这样做得的好处是非常明显的。它能明确的表达表达式所定义的含义。例如:
dojo.events.mouse.Handler // 而非 dojo.events.mouse.MouseEventHandler
15.类/构造函数 可以使用 扩展其基类的名称命名,这样可以正确、迅速的找到其基类的名称:
EventHandler
UIEventHandler
MouseEventHandler
基类可以在明确描述其属性的前提下,缩减其命名:
MouseEventHandler as opposed to MouseUIEventHandler.
特殊命名规范
术语 “get/set” 不要和一个字段相连,除非它被定义为私有变量。
前面加 “is” 的变量名 应该 为布尔值,同理可以为 “has”, “can” 或者 “should”。
术语 “compute” 作为变量名应为已经计算完成的变量。
术语 “find” 作为变量名应为已经查找完成的变量。
术语 “initialize” 或者 “init” 作为变量名应为已经实例化(初始化)完成的类或者其他类型的变量。
UI (用户界面)控制变量应在名称后加控制类型,例如: leftComboBox, TopScrollPane。
复数必须有其公共的名称约定(原文:Plural form MUST be used to name collections)。
带有 “num” 或者 “count” 开头的变量名约定为数字(对象)。
重复变量建议使用 “i”, “j”, “k” (依次类推)等名称的变量。
补充用语必须使用补充词,例如: get/set, add/remove, create/destroy, start/stop, insert/delete, begin/end, etc.
能缩写的名称尽量使用缩写。
避免产生歧义的布尔变量名称,例如:
isNotError, isNotFound 为非法
错误类建议在变量名称后加上 “Exception” 或者 “Error”。
方法如果返回一个类,则应该在名称上说明返回什么;如果是一个过程,则应该说明做了什么。
文件
缩进请使用 4 个空白符的制表位。
如果您的编辑器支持 文件标签_(file tags),请加添如下的一行使我们的代码更容易阅读:
// vim:ts=4:noet:tw=0:
译注:老外用 VIM 编辑器比较多,此条可以选择遵循。
代码折叠必须看起来是完成并且是合乎逻辑的:
var someExpression = Expression1
+ Expression2
+ Expression3;
var o = someObject.get(
Expression1,
Expression2,
Expression3
);
注:表达式的缩进与变量声明应为一致的。
注:函数的参数应采用明确的缩进,缩进规则与其他块保持一致。
变量
- 变量必须在声明初始化以后才能使用,即便是 NULL 类型。
- 变量不能产生歧义。
- 相关的变量集应该放在同一代码块中,非相关的变量集不应该放在同一代码块中。
- 变量应该尽量保持最小的生存周期。
- 循环/重复变量的规范:
- 只有循环控制块的话,则必须使用 FOR 循环。
- 循环变量应该在循环开始前就被初始化;如使用 FOR 循环,则使用 FOR 语句初始化循环变量。
- “do … while” 语句是被允许的。
- “break” 和 “continue” 语句仍然允许使用(但请注意)。
- 条件表达式
- 应该尽量避免复杂的条件表达式,如有必要可以使用临时布尔变量。
- The nominal case SHOULD be put in the “if” part and the exception in the “else” part of an “if” statement.
- 应避免在条件表达式中加入块。
- 杂项
- 尽量避免幻数(Magic numbers),他们应该使用常量来代替。
- 浮点变量必须指明小数点后一位(即使是 0)。
- 浮点变量必须指明实部,即使它们为零(使用 0. 开头)。
布局
块
普通代码段 应该 看起来如下: