整理了一些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. UNIX网络编程——使用select函数的TCP和UDP回射服务器程序

    服务器程序: #include <sys/wait.h> #include <string.h> #include <string.h> #include < ...

  2. Java相关错误

    http://blog.csdn.net/pipisorry/article/details/51291063 使用hadoop jar ./Hw2Part1.jar /hw2/example-inp ...

  3. USB有时adb shell连不上设备

    USB有时adb shell连不上设备 图1 下面汇总有效的解决方法 1.     重启 2.     卸载和重新装载驱动 图2 3.

  4. UNIX网络编程——套接字选项(setsockopt)

    setsockopt的一些用法: close socket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket: BOOL bReuseaddr=TRUE; setsockop ...

  5. 尚学堂马士兵struts2 课堂笔记(四)

    27 结果类型 主要就四种种 dispatch和rediret chain和drdirectaction <package name="resultTypes" namesp ...

  6. XBMC源代码分析 7:视频播放器(dvdplayer)-输入流(以libRTMP为例)

    前文分析了XBMC的基本结构: XBMC源代码分析 1:整体结构以及编译方法 XBMC源代码分析 2:Addons(皮肤Skin) XBMC源代码分析 3:核心部分(core)-综述 XBMC源代码分 ...

  7. shell 常用正则表达式

    "^\d+$" //非负整数(正整数 + 0) "^[0-9]*[1-9][0-9]*$" //正整数 "^((-\d+)|(0+))$" ...

  8. nginx 平滑升级

    怎么能在不停止服务的情况下,平滑的升级nginx?下面告诉你答案,其实很简单 1.下载nginx新版本,并解压,进入解压的目录 2.你要执行旧版本的nginx -V来查看旧版本编译的时候,编译了什么模 ...

  9. HashMap与HashTable面试宝典

    u012233832的专栏 初生牛犊 目录视图 摘要视图 订阅 写博客,送money.送书.送C币啦   7-8月博乐推荐文章    砸BUG 得大奖 100%中奖率   微信开发学习路线高级篇上线  ...

  10. Darwin Streaming Server 安装流程

    Darwin StreamingServer 安装流程 Darwin StreamingServer 支持开放源代码和基于标准的实时传输协议/实时流协议(RTP/ RTSP).MPEG-4 和MP3 ...