[转]让你的Flex MXML和ActionScript 3代码更规范:第四篇:格式化篇
【第四篇:格式化篇】
这部分包括讲述一个Flex类该如何格式化
--------------------------------------------------------------------------------------------------------
线宽(Line width)
代码保持80字符长度,这样做有下面几个优点:
•小屏幕的开发者不需要滚动就可以看到长代码
•对比代码的工具可以同时两边显示两个版本的同一文件
•文字大小可以加粗加大而不需要滚动
•源代码不需要裁剪就可以打印
--------------------------------------------------------------------------------------------------------
缩排(Indentation)
使用4空格来缩排,配置你的编辑器插入空格而不是Tab,这可以让其他使用不同缩排设置的程序也可以使用代码,如使用8字符的文本就不需要改变设置就可以方便显示了
--------------------------------------------------------------------------------------------------------
分段说明(Section separators)
插入类中的主要的分段说明如下:
//--------------------------------------------------------------------------
//
// Overridden methods
//
//--------------------------------------------------------------------------
横向由4字符到80字符宽度,文本缩排到8字符
在类中的小分段说明如下,如在属性间的说明
//----------------------------------
// visible
//----------------------------------
横向由4字符到40字符宽度,文本缩排到8字符
在分段说明上下留空一行
--------------------------------------------------------------------------------------------------------
分段声明注释(Separation of declarations)
在常量、变量以及函数声明间纵向使用一空行分开
/**
* @private
* Holds something.
*/
var a:Number;
/**
* @private
*/
var b:Number
--------------------------------------------------------------------------------------------------------
标签(Metadata)
TBD
推荐:
Inspectable[a="1", b="2"]
不推荐:
Inspectable[a=1 b=2]
--------------------------------------------------------------------------------------------------------
数组索引(Array indexing)
不在数组[]中的索引左右使用任何空格
推荐:
a[0]
不推荐:
a[ 0 ]
--------------------------------------------------------------------------------------------------------
逗号(Commas)
在逗号有使用一个空格,这个规则适用于参数列表、数组内容和Object内容
--------------------------------------------------------------------------------------------------------
数组内容(Array literals)
对于数组内容,在[]内部内容的最前和最后加入一个空格,同时在逗号后加入一个空格
推荐:
[ 1, 2, 3 ]
不推荐:
[1, 2, 3]
[1,2,3]
空数组是一个例外
推荐:
[]
不推荐:
[ ]
格式化数组初始化多行内容如下
static var numberNames:Array /* of String */ =
[
"zero",
"one",
"two",
"three",
"four",
"five",
"six",
"seven",
"eight",
"nine"
];
--------------------------------------------------------------------------------------------------------
Object内容(Object literals)
对于Object内容,在{}内部内容的最前和最后加入一个空格,同时在逗号后加入一个空格
推荐:
{ a: 1, b: 2, c: 3 }
不推荐:
{a: 1, b: 2, c: 3}
{a:1, b:2, c:3}
{a:1,b:2,c:3}
空Object是例外
推荐:
{}
不推荐:
{ }
格式化Object初始化多行内容如下:
private static var TextStyleMap:Object =
{
color: true,
fontFamily: true,
fontSize: true,
fontStyle: true,
fontWeight: true,
leading: true,
marginLeft: true,
marginRight: true,
textAlign: true,
textDecoration: true,
textIndent: true
};
--------------------------------------------------------------------------------------------------------
函数内容(Function literals)
TBD
var f:Function;
f = function():void
{
doSomething();
};
--------------------------------------------------------------------------------------------------------
类型说明(Type declarations)
不在:前后使用任何空格
推荐:
var n:Number;
不推荐:
var n : Number;
var n: Number;
推荐:
function f(n:Number):void
不推荐:
function f(n : Number) : void
function f(n: Number): void
--------------------------------------------------------------------------------------------------------
操作符相关(Operators and assignments)
操作符前后加入一个空格
推荐:
a = 1;不推荐:
a=1;
推荐:
a + b * c
不推荐:
a+b*c
推荐:
a == b不推荐:
a==b
不在前置操作符前后加空格.
推荐:
!o
不推荐:
! o
不在后置操作符前后加空格.
推荐:
i++
不推荐:
i ++
--------------------------------------------------------------------------------------------------------
指令部分(Statements)
一个指令一行这样可以在任何一个指令中设置断点
推荐:
a = 1;
b = 2;
c = 3;
不推荐:
a = 1; b = 2; c = 3;
每个大括号一行
推荐:
function f():void
{
var n:int = numChildren;
for (var i:int = 0; i < n; i++)
{
if ()
{
x = horizontalGap * i;
y = verticalGap * i;
}
}
}
不推荐:
function f():void {
var n:int = numChildren;
for (var i:int = 0; i < n; i++) {
if () {
x = horizontalGap * i;
y = verticalGap * i;
}
}
}
--------------------------------------------------------------------------------------------------------
常量变量说明(Constant and variable declarations)
TBD
--------------------------------------------------------------------------------------------------------
函数说明(Function declarations)
TBD
推荐:
f(a, b)
不推荐:'
f(a,b)
f( a, b )
这部分最好看看原文排序,我的blog这些样式都没有设置,就是弄得好看点
public function foo(parameter1:Number, parameter2:String,
parameter3:Boolean):void
public function foo(parameter1:Number,
parameter2:String,
parameter3:Boolean):void
public function aVeryLongFunctionName(
parameter1:Number, parameter2:String,
parameter3:Boolean):void
--------------------------------------------------------------------------------------------------------
Function calls
TBD
Do this:
f(a, b)
Not these:
f(a,b)
f( a, b )
--------------------------------------------------------------------------------------------------------
if指令(if statements)
在if关键字后加入一个空格,()的内容最前最后不加空格
推荐:
if (a < b)
不推荐:
if(a < b)
if( a < b )
if ( a < b )
else if ?
multiline ?
--------------------------------------------------------------------------------------------------------
for指令(for statements)
在for关键字后加入一个空格,()的内容最前最后不加空格
推荐:
for (var i:int = 0; i < n; i++)
不推荐:
for(var i:int = 0; i < n; i++)
for( var i:int = 0; i < n; i++ )
for ( var i:int = 0; i < n; i++ )
下面排序跟function的差不多
for (var aLongLoopVariableName:int = aLongInitialExpression;
aLongLoopVariableName < aLongUpperLimit;
aLongLoopVariableName++)
--------------------------------------------------------------------------------------------------------
switch指令(switch statements)
在switch关键字后加入一个空格,()的内容最前最后不加空格
推荐:
switch (n)
不推荐:
switch(n)
switch( n )
switch ( n )
推荐:
switch (n)
{
case 1:
{
a = foo();
break;
}
case 2:
{ a = bar();
break;
}
default:
{
a = blech();
break;
}
}
不推荐:
switch(n)
switch( n )
switch ( n )
--------------------------------------------------------------------------------------------------------
类和接口说明(class and interface declarations)
大括号对称
一行指令一单独行
--------------------------------------------------------------------------------------------------------
总一句就是让自己看着舒服,让别人看着爽
这部分包括讲述一个Flex类该如何格式化
--------------------------------------------------------------------------------------------------------
线宽(Line width)
代码保持80字符长度,这样做有下面几个优点:
•小屏幕的开发者不需要滚动就可以看到长代码
•对比代码的工具可以同时两边显示两个版本的同一文件
•文字大小可以加粗加大而不需要滚动
•源代码不需要裁剪就可以打印
--------------------------------------------------------------------------------------------------------
缩排(Indentation)
使用4空格来缩排,配置你的编辑器插入空格而不是Tab,这可以让其他使用不同缩排设置的程序也可以使用代码,如使用8字符的文本就不需要改变设置就可以方便显示了
--------------------------------------------------------------------------------------------------------
分段说明(Section separators)
插入类中的主要的分段说明如下:
//--------------------------------------------------------------------------
//
// Overridden methods
//
//--------------------------------------------------------------------------
横向由4字符到80字符宽度,文本缩排到8字符
在类中的小分段说明如下,如在属性间的说明
//----------------------------------
// visible
//----------------------------------
横向由4字符到40字符宽度,文本缩排到8字符
在分段说明上下留空一行
--------------------------------------------------------------------------------------------------------
分段声明注释(Separation of declarations)
在常量、变量以及函数声明间纵向使用一空行分开
/**
* @private
* Holds something.
*/
var a:Number;
/**
* @private
*/
var b:Number
--------------------------------------------------------------------------------------------------------
标签(Metadata)
TBD
推荐:
Inspectable[a="1", b="2"]
不推荐:
Inspectable[a=1 b=2]
--------------------------------------------------------------------------------------------------------
数组索引(Array indexing)
不在数组[]中的索引左右使用任何空格
推荐:
a[0]
不推荐:
a[ 0 ]
--------------------------------------------------------------------------------------------------------
逗号(Commas)
在逗号有使用一个空格,这个规则适用于参数列表、数组内容和Object内容
--------------------------------------------------------------------------------------------------------
数组内容(Array literals)
对于数组内容,在[]内部内容的最前和最后加入一个空格,同时在逗号后加入一个空格
推荐:
[ 1, 2, 3 ]
不推荐:
[1, 2, 3]
[1,2,3]
空数组是一个例外
推荐:
[]
不推荐:
[ ]
格式化数组初始化多行内容如下
static var numberNames:Array /* of String */ =
[
"zero",
"one",
"two",
"three",
"four",
"five",
"six",
"seven",
"eight",
"nine"
];
--------------------------------------------------------------------------------------------------------
Object内容(Object literals)
对于Object内容,在{}内部内容的最前和最后加入一个空格,同时在逗号后加入一个空格
推荐:
{ a: 1, b: 2, c: 3 }
不推荐:
{a: 1, b: 2, c: 3}
{a:1, b:2, c:3}
{a:1,b:2,c:3}
空Object是例外
推荐:
{}
不推荐:
{ }
格式化Object初始化多行内容如下:
private static var TextStyleMap:Object =
{
color: true,
fontFamily: true,
fontSize: true,
fontStyle: true,
fontWeight: true,
leading: true,
marginLeft: true,
marginRight: true,
textAlign: true,
textDecoration: true,
textIndent: true
};
--------------------------------------------------------------------------------------------------------
函数内容(Function literals)
TBD
var f:Function;
f = function():void
{
doSomething();
};
--------------------------------------------------------------------------------------------------------
类型说明(Type declarations)
不在:前后使用任何空格
推荐:
var n:Number;
不推荐:
var n : Number;
var n: Number;
推荐:
function f(n:Number):void
不推荐:
function f(n : Number) : void
function f(n: Number): void
--------------------------------------------------------------------------------------------------------
操作符相关(Operators and assignments)
操作符前后加入一个空格
推荐:
a = 1;不推荐:
a=1;
推荐:
a + b * c
不推荐:
a+b*c
推荐:
a == b不推荐:
a==b
不在前置操作符前后加空格.
推荐:
!o
不推荐:
! o
不在后置操作符前后加空格.
推荐:
i++
不推荐:
i ++
--------------------------------------------------------------------------------------------------------
指令部分(Statements)
一个指令一行这样可以在任何一个指令中设置断点
推荐:
a = 1;
b = 2;
c = 3;
不推荐:
a = 1; b = 2; c = 3;
每个大括号一行
推荐:
function f():void
{
var n:int = numChildren;
for (var i:int = 0; i < n; i++)
{
if ()
{
x = horizontalGap * i;
y = verticalGap * i;
}
}
}
不推荐:
function f():void {
var n:int = numChildren;
for (var i:int = 0; i < n; i++) {
if () {
x = horizontalGap * i;
y = verticalGap * i;
}
}
}
--------------------------------------------------------------------------------------------------------
常量变量说明(Constant and variable declarations)
TBD
--------------------------------------------------------------------------------------------------------
函数说明(Function declarations)
TBD
推荐:
f(a, b)
不推荐:'
f(a,b)
f( a, b )
这部分最好看看原文排序,我的blog这些样式都没有设置,就是弄得好看点
public function foo(parameter1:Number, parameter2:String,
parameter3:Boolean):void
public function foo(parameter1:Number,
parameter2:String,
parameter3:Boolean):void
public function aVeryLongFunctionName(
parameter1:Number, parameter2:String,
parameter3:Boolean):void
--------------------------------------------------------------------------------------------------------
Function calls
TBD
Do this:
f(a, b)
Not these:
f(a,b)
f( a, b )
--------------------------------------------------------------------------------------------------------
if指令(if statements)
在if关键字后加入一个空格,()的内容最前最后不加空格
推荐:
if (a < b)
不推荐:
if(a < b)
if( a < b )
if ( a < b )
else if ?
multiline ?
--------------------------------------------------------------------------------------------------------
for指令(for statements)
在for关键字后加入一个空格,()的内容最前最后不加空格
推荐:
for (var i:int = 0; i < n; i++)
不推荐:
for(var i:int = 0; i < n; i++)
for( var i:int = 0; i < n; i++ )
for ( var i:int = 0; i < n; i++ )
下面排序跟function的差不多
for (var aLongLoopVariableName:int = aLongInitialExpression;
aLongLoopVariableName < aLongUpperLimit;
aLongLoopVariableName++)
--------------------------------------------------------------------------------------------------------
switch指令(switch statements)
在switch关键字后加入一个空格,()的内容最前最后不加空格
推荐:
switch (n)
不推荐:
switch(n)
switch( n )
switch ( n )
推荐:
switch (n)
{
case 1:
{
a = foo();
break;
}
case 2:
{ a = bar();
break;
}
default:
{
a = blech();
break;
}
}
不推荐:
switch(n)
switch( n )
switch ( n )
--------------------------------------------------------------------------------------------------------
类和接口说明(class and interface declarations)
大括号对称
一行指令一单独行
--------------------------------------------------------------------------------------------------------
总一句就是让自己看着舒服,让别人看着爽