我的编码规范

在我参与实际项目的这一年多的时间里,我间接或者直接修改,重写,补充,拓展过不同的同事的代码.

在这之中发现大家的风格不一,加上我本身是一个强迫症患者,看到与自己习惯不相符的地方往往会停下一切工作去修改回来,例如我最近把项目的100多个警告全部改回来了,让人不舒服的警告图标消失了,顿时觉得精神气爽.我遇到的同事中 不少人都保持着一种或者几种个人特色的代码写法.

例如同事A:

[code lang=”java”]var demoA = 1;[/code]

这会引发一个没有声明类型的警告.

例如同事B:

[code lang=”java”]
var demoB:int=1;
var demoC:int = 1;[/code]

"="号两边紧挨数值和变量,代码看起来比"="号两边空格累人.

同事C:

[code lang=”java”]
private function demoC(arg1:*=null)[/code]

三个字符组合:*=null,在FB4.6中会引发整个类无法着色.

等等…每个人的习惯无可厚非,但是我觉得大家都保持一种代码规范会让大家都收益,特别是交叉模块编程的时候.例如我的角色模块需要调用你的背包模块.或者是后来的同事接手离职同事代码的时候,统一的代码规范更加能提升工作效率!

所以我给我自己定制了以下标准,记录在此:
都是日常写代码中的小细节,一般人都会忽略这个问题,但是当我回看我一年前的代码的时候,觉得是时候对自己的手指进行革命了!

  • 尽量避免警告

所谓警告,并并不是错误,并不会导致程序挂掉,警告是编辑器发出的  也就是说 警告是编辑器的建议.就像我建议你饭后吃个水果比饭后不吃水果更有利于健康一样.健康大家都需要,所以看到感叹号 团队一致消灭 是一个好习惯.(我曾经花了一个上午的时间消灭了所有人的代码中的警告!)

  • 等号两边加空格

[code lang=”java”]var demo:int = 1;[/code]

  • 每行结束后加分号

这点在AS等几种语言中是非必要的,但是顺手加会更加好.毕竟你不可能一直用as.保持一种习惯更容易切换各种语言(例如AIR项目中负责ANE的朋友,非常有可能会一天之中在C++ PHP AS OC 四种语言中切换,真是崩溃).

  • 数组初始化

[code lang=”java”]var arr:Array = [];[/code]
这种初始化方法 会比直接new的快几个字节.

  • if语句写法

[code lang=”java”]if("rect" == rect)[/code]
数值在==号前面,至于为什么这样写 我隐约记得美利坚某个超级大BUG就是由于数值在==号后面引发的,至于事情的具体我已经忘记了.
但是如果是在底层,无论是if 还是while 还是switch 等最终都会被翻译成:
[cc lang=”asm”]
//先翻译成比较命令
cmp eax,ebx
//然后其实是执行加减操作
sub eax,ebx
//最后结果才是检查标志位是否为1-0
[/cc]

  • 单例写法

[code lang=”java”]
public class RectClass
{
private static var instance:RectClass;
public function RectClass()
{
}
public static function getInstance():RectClass
{
if(null == instance)
instance = new RectClass();
return instance;
}
}
[/code]
这样写个人感觉比直接设置instance为public更能保持了类的封闭性.

  • 每行代码不超过80字符

我隐约记得当年学软件的同学(我大学是和程序员不太搭边的边缘专业)写代码的时候,会在显示屏画一条直线来限制自己写的代码长度.我个人感觉一行代码不应该超过编译器宽度的3/4;否则就会超出编辑器 看起来好累,例如一下这句:
[code lang=”java”]public function BaiduAdsCode(isCodeSet:Boolean = false,appSid:String = "debug",appSec:String = "debug",baiduKey:String = "baidu",countriesKey:String = "中国"):String{
if(extContext ){
return extContext.call(BAIDUADS_FUNCTION_CODE,isCodeSet,appSid,appSec,baiduKey,countriesKey) as String;
}
return "call BaiduAdsCode failed";[/code]
显然大家看的都很累.但是这样就清爽多了:
[code lang=”java”]
public function BaiduAdsCode(isCodeSet:Boolean = false,
appSid:String = "debug",
appSec:String = "debug",
baiduKey:String = "baidu",
countriesKey:String = "中国"):String{
if(extContext ){
return extContext.call(BAIDUADS_FUNCTION_CODE,
isCodeSet,
appSid,
appSec,
baiduKey,
countriesKey) as String;
}
return "call BaiduAdsCode failed";
[/code]

  • if嵌套少于3

[code lang=”java”]
if("rect" == rect )
{
if("www.shadowkong.com" == blog )
{
if("rectvv@gmail.com" == email)
{
if("china" == cun )
{

}
}
}
}
[/code]
感受下,这个代码.

会持续记录.未完待续

发表评论

邮箱地址不会被公开。 必填项已用*标注