整理了一些AS3的编程规范,有些规则对于大部分语言都是适用的,有什么问题请提出来,我会持续改进这份规范,谢谢!
 
[参考资料]
 

[规则1]变量的初始化,定义变量后立即初始化,如果是类的成员,请在声明的时候进行初始化

例如:var i:int = 0;
          var arr:Array = [];                                 
          var obj:Object = {};                            
          public var sprite:Sprite = new Sprite();
          public var sprite:Sprite = null;
 
[规则2]变量名的命名
变量名的命名:类型名缩写+变量的作用
避免无意义的变量名,做到见其名知其意
例如:var iCount:int = 0;
          var numWidth:Number = 0;
          var btnClose:SimpleButton = null;
          var mcTaskPanel:MovieClip = null;
 
[规则3]常量名的命名
常量名的命名:变量名所对应的单词的大写加下划线
例如:需要定义通知常量:获取物品数据、打开人物信息面板
public static const GET_PROPS_DATA:String = "GET_PROPS_DAT";
public static const OPEN_PERSON_INFO_PANEL:String = "OPEN_PERSON_INFO_PANEL";
 
[规则4]尽量少用Object
对于每一个拥有超过两个属性以上的变量,尽量为其写一个结构体,便于管理
例如:一个变量拥有一个id:int和count:int可以为其定义一个结构体
class ID_COUNT
{
     public var iID:int;
     public var iCount:int;

}

而且此结构体可以做为一个公共模块给其他模块使用
 
[规则5] 避免写过于复杂的语句,一个语句做一件事情
例如:DisPlayUtil.getClass("com.xygame.module.facade.ApplicationFacade").getInstance().registerMediator(new Mediator(this));
可以拆为两个语句
var ApplicationFacade:Class = DisPlayUtil.getClass("com.xygame.module.facade.ApplicationFacade") as Class;
ApplicationFacade.getInstance().registerMediator(new Mediator(this));
 
[规则6]事件的侦听
当给某个对象添加事件侦听的时候,除非特殊需求,否则一定要在写完addEventListener后马上在销毁的地方写上removeEventListener
就像是一个"("必须对应一个")"一样。
特别说明:使用自已的函数对自己进行侦听是不会增加该对象的引用计数的
 
[规则7]鼠标相关
1、禁用不需要的鼠标消息:如果确定一个对象是不需要鼠标消息的话,那么可以将此对象的 mouseChildren 和 mouseEnabled 这两个属性设置为false,这样这个对象就不会收到鼠标消息,优化了性能
2、不使用SimpleButton,使用MovieClip或者Sprite模拟SimpleButton(buttonMode = useHandCursor = true;)
 
[规则8]循环中的条件值使用定值,而不是函数,或者getter
例如:var iLen:int = arr.length; 
for (var i:int = 0; i < iLen; i++)
{
     //...

}

 
[规则9]函数参数的合法性检查
当编写一个自定义函数的时候,除构造函数和无参函数以外,第一件要做的事情就是对参数进行合法性验证
合法性验证失败有两种情况
第一:逻辑错误,这是函数本身的编写缺陷
第二:异常导致,也就是说传进来的参数不合法所导致的
例如:
//除法函数,num1为除数,num2为被除数
public function division(num1:Number, num2:Number):Number
{
     if (num2 == 0)
     {
          return 0;
     }
     return num1 / num2;

}

 
[规则10]垃圾回收
Flash中的垃圾回收机制是通过引用计数来判断是否对某个对象进行垃圾回收,当一个对象的引用计数为0时才会被当做垃圾
有以下几种情况会增加一个对象的引用计数:
1、对象的赋值
例如:var mc1:MovieClip = new MovieClip();
          var mc2:MovieClip = mc1;
此时如果不写上mc2 = null,那么mc1就不会垃圾回收
2、事件的侦听addEventListener,这点在[规则6]中有说明
3、添加到可视对象列表addChild
4、成为某个容器的成员
例如:var mc1:MovieClip = new MovieClip();
          var arr:Array = [mc1];
          var dic:Dictionary = new Dictionary();
          dic["key"] = mc1;
          var obj:Object = {key:mc1};
解决以上的方法就是养成良好的代码书写习惯,写代码时要"成对的写"
也就是说,当增加一个对象引用计数的时候,马上写下减少该对象引用计数的代码
例如:addChild 后面一定接一个 removeChild
addEventListener 后面一定接一个 removeEventListener
dic["key"] 后面一定接一个 delete dic["key"]等等

AS3编程规范的更多相关文章

  1. flex+AS3编程规范

    flex+AS3编程规范 Flex+AS3编码规范 http://www.cnblogs.com/jiahuafu/   1.  缩写: 尽量避免使用缩写,使用缩写时尽量和Flex保持一致.但要记住一 ...

  2. Batsing的网页编程规范(HTML/CSS/JS/PHP)

    特别注意!!!我这里的前端编程规范不苟同于Bootstrap的前端规范. 因为我和它的目的不同,Bootstrap规范是极简主义,甚至有些没有考虑到兼容性的问题. 我的规范是自己从编程实践中总结出来的 ...

  3. JAVA编程规范(下)

    JAVA编程规范(下) 2016-03-27 6. 代码的格式化 6.1 对代码进行格式化时,要达到的目的 1.     通过代码分割成功能块和便于理解的代码段,使代码更容易阅读和理解: 2.     ...

  4. JAVA 编程规范(上)

    2016-03-20 J120-CHARLIEPAN JAVA 编程规范(上) 1.      应用范围 本规范应用于采用J2EE规范的项目中,所有项目中的JAVA代码(含JSP,SERVLET,JA ...

  5. 使Eclipse符合Java编程规范

    编程规范是很重要的东西,能让团队的代码易于阅读和维护,也便于日后的功能扩展. 工欲善其事必先利其器!作为一个Java程序员,与Eclipse打交道可能是一辈子的事情.将Eclipse设置为符合公司编程 ...

  6. Python编程规范(PEP8)

    Python编程规范(PEP8) 代码布局 缩进 对于每一次缩进使用4个空格.使用括号.中括号.大括号进行垂直对齐,或者缩进对齐. 制表符还是空格? 永远不要将制表符与空格混合使用.Python最常用 ...

  7. Python 编程规范-----转载

    Python编程规范及性能优化 Ptyhon编程规范 编码 所有的 Python 脚本文件都应在文件头标上 # -*- coding:utf-8 -*- .设置编辑器,默认保存为 utf-8 格式. ...

  8. JavaScript编程规范

    最近看NodeJS中,有一部分写JS约定俗成的编程规范(附录B,详情参考附件),感觉在实际工作中能用到, 大致意思分享给大家,详情参考附件: 1.缩进:建议两空格 作为Node.js代码的缩进标记: ...

  9. 华为C语言编程规范

    DKBA华为技术有限公司内部技术规范DKBA 2826-2011.5C语言编程规范2011年5月9日发布 2011年5月9日实施华为技术有限公司Huawei Technologies Co., Ltd ...

随机推荐

  1. Android开发学习之路--Activity之初体验

    环境也搭建好了,android系统也基本了解了,那么接下来就可以开始学习android开发了,相信这么学下去肯定可以把android开发学习好的,再加上时而再温故下linux下的知识,看看androi ...

  2. Mybatis源码之Statement处理器PreparedStatementHandler(五)

    PreparedStatementHandler就是调用PreparedStatement来执行SQL语句,这样在第一次执行sql语句时会进行预编译,在接下来执行相同的SQL语句时会提高数据库性能 源 ...

  3. TSVN客户端复制文件

    TSVN客户端复制文件 代码重构中,可能需要将一个大文件拆分成2个小文件,同时要保证拆分后的小文件继承原来的SVN历史记录. TSVN客户端只有Rename功能,没有Copy功能. 可进入Browse ...

  4. (六十九)使用block进行消息传递

    在两个类之间进行消息传递,一般通过代理或者block进行,代理写起来较为麻烦,block较为简单,但是block需要特别注意内存泄漏问题,注意self和block之间要为弱引用,下面介绍使用block ...

  5. 方便使用FFMPEG的经验

    FFMPEG是命令行工具,因此使用起来多少还是会有些不方便.在这记录两点方便使用FFMPEG的方法: 1.任何目录下都可以使用FFMPEG 问题描述:需要转码(播放)的时候,需要把ffmpeg.exe ...

  6. Java将网络地址对应的图片转成本地的图片

     只知道浏览器使用的是HTTP协议,那么如何将网络资源使用JavaHTTP下载下来呢! 这只是一个非常简单的小示例,只是不想每次碰到关于此方面的内容忘了就无从下手! 示例创建HttpURLConn ...

  7. Java解析XML与生成XML文件

    XML是eXtensible Markup Language(可扩展标记语言)的简写形式,它是一种元标记语言(meta-markup language),也就是说它没有一套能够适用于各个领域中所有用户 ...

  8. 小强的HTML5移动开发之路(3)——HTML5与HTML4比较

    来自:http://blog.csdn.net/dawanganban/article/details/17652873 在前面介绍了HTML5的新特性,新标签的使用,智能表单设计,引入多媒体对象,C ...

  9. 18_Android中Service的生命周期,远程服务,绑定远程服务,aidl服务调用,综合服务案例,编写一个应用程序调用远程支付宝远程服务场景

    ============================================================================ 服务的生命周期: 一.采用start的方式开始 ...

  10. IE11 开启F12开发人员工具中的 始终从服务器刷新

    在进行页面脚本调试时,经常需要清除浏览器缓存来获取最新的脚本文件,IE11之前的浏览器版本我们可以按F12调出开发人员工具,在缓存选项中开启"始终从服务器中刷新"的设置后我们就不需 ...