[转]让你的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)
大括号对称

一行指令一单独行

--------------------------------------------------------------------------------------------------------



总一句就是让自己看着舒服,让别人看着爽

posted @ 2011-10-26 22:31  Stranger  阅读(143)  评论(0编辑  收藏  举报