整理了一些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. MySQl数据库必会sql语句加强版

    这篇承接上一篇<mysql必会sql语句>:http://blog.csdn.net/qq_32059827/article/details/51763950 这一篇属于加强版,问题和sq ...

  2. Andriod Studio科普篇——4.关于编译的常见问题

    1.android支持库未安装 编译不过,提示如下: Could not find any version that matches com.android.support:appcompat-v7: ...

  3. Hadoop的运行痕迹

    http://www.cnblogs.com/forfuture1978/archive/2010/11/23/1884967.html 一篇讲的很好的 hadoop 基本运行环境配置信息

  4. volatile适用场合

    volatile适用场合 要在多线程中安全的适用volatitle变量,必须同时满足:        1.对变量的写入操作不依赖其当前值 不满足:number++.count = count * 5等 ...

  5. Android必知必会-Handler可能引起的内存泄露

    在Android开发中,编写多线程通常会使用到Thread和Handler,细心的朋友会发现,很常见的写法会被编辑器提示有问题,new Handler(){} 内的代码背景颜色会变成黄色.Androi ...

  6. Spark-streaming 连接flume

    1,程序为spark的example中的FlumeEventCount示例 object FlumeEventCount { def main(args: Array[String]) { Strea ...

  7. Android进阶(十)Android 发邮件

    最近在做的APP涉及到发邮件,总结如下: 在android里进行邮件客户端开发可以有两种方式: 在邮件客户端的设计中,可以采用两种方法. 一种是调用android系统自带的邮件服务 优点:这种方法比较 ...

  8. Pixelmetrix :OTT Media Grinder (OTT TV 质量评价设备)

    有关OTT TV 质量评价方法方面的研究少之又少.国内貌似还几乎没有相关的研究.不过在国外已经找到相关的产品了,翻译了一下产品手册的部分内容,很有参考价值,尤其是其提出的8个指标. 概述 OTT Me ...

  9. STL(标准模板库)理论基础,容器,迭代器,算法

    基本概念 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.现然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间.   ...

  10. LeetCode之“字符串”:ZigZag Conversion

    题目链接 题目要求: The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of ...