整理了一些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应用开发】 推送原理解析 极光推送使用详解 (零基础精通推送)

    作者 : octopus_truth 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/45046283 推送技术产生场景 : -- ...

  2. 【一天一道LeetCode】#160. Intersection of Two Linked Lists

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Write a ...

  3. Android开发技巧——使用PopupWindow实现弹出菜单

    在本文当中,我将会与大家分享一个封装了PopupWindow实现弹出菜单的类,并说明它的实现与使用. 因对界面的需求,android原生的弹出菜单已不能满足我们的需求,自定义菜单成了我们的唯一选择,在 ...

  4. 仿iphone快速导航悬浮球

    用过iphone的朋友都知道,iPhone有个圆球辅助工具,它漂浮在你的手机屏幕(在任何APP之上),你可以将它移动到任何地方,它叫做AssistiveTouch,本篇模拟该软件实现一个小案例,主要是 ...

  5. [C++学习历程]Visual Studio 2010 的HelloWorld

    大学时期曾学过C++的知识,那时候也没有使用VS这样高档的IDE工具,就是C++6.0那样来的.对于重新拾起C++来说,换了个IDE,那么就先从使用IDE学起吧~ 作者:苏生米沿 本文链接:http: ...

  6. 调试bootmgr&winload vista&win7 x86&x64

    设置调试bootmgr 1.以管理员权限运行cmd.exe 2.执行以下命令 3.  参照我的另一篇文章<win8 + vmware + windbg 双机调试 >中的第1.3步,建立wi ...

  7. Java进阶(三十) 判断字符串编码类型

    java 判断字符串编码类型 public static String getEncoding(String str) { String encode = "GB2312"; tr ...

  8. Caffe框架,了解三个文件

    不知道从什么时候开始,Deep Learning成为了各个领域研究的热点,也不知道从什么时候开始,2015CVPR的文章出现了很多Deep Learning的文章,更不知道从什么时候开始,三维重建各个 ...

  9. 深入 JAVA里面关于byte数组和String之间的转换问题

    把byte转化成string,必须经过编码.  例如下面一个例子:  importjava.io.UnsupportedEncodingException; publicclass test{ pub ...

  10. 《java入门第一季》之StringBuffer小案例

    这里是针对其反转功能来举的例子,再对比之前写的一篇String类的反转功能,StringBuffer明显提高了代码量,提高了效率. import java.util.Scanner; /* * 把字符 ...