整理了一些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. 【Unity Shaders】Mobile Shader Adjustment—— 什么是高效的Shader

    本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...

  2. Cocos2D iOS之旅:如何写一个敲地鼠游戏(一):高清屏显示和UIKit

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...

  3. Android的ImageView介绍-android学习之旅(二十二)

    ImageView简介 imageView继承于View,主要用于显示图片,凡是Drawable对象都可以用它显示. ImageView直接派生了ImageButton和ZoomButton等组件. ...

  4. LINUX0.11 内核阅读笔记

    一.源码目录 图1 二.系统总体流程: 系统从boot开始动作,把内核从启动盘装到正确的位置,进行一些基本的初始化,如检测内存,保护模式相关,建立页目录和内存页表,GDT表,IDT表.然后进入main ...

  5. Mybatis源码之(TypeAliasRegistry)TypeAlias别名实现机制

    在Mybatis编程中我们经常会用到将某个bean作为参数类型parameterType或者结果返回值类型ResultType,所以很多时候我们需要把完成的Bean的包名在mapper文件中写上,如下 ...

  6. Linux多线程实践(7) --多线程排序对比

    屏障 int pthread_barrier_init(pthread_barrier_t *restrict barrier, const pthread_barrierattr_t *restri ...

  7. java程序的加载过程

    昨天笔试阿里有个求java程序加载过程的题目很是复杂,回来研究了好久才有点明白,整理一下.原题代码如下,判断输出: public class StaticTest { public static in ...

  8. Vi/Vim 替换使用方法

    vi/vim 中可以使用 :s 命令来替换字符串.该命令有很多种不同细节使用方法,可以实现复杂的功能,记录几种在此,方便以后查询. :s/vivian/sky/ 替换当前行第一个 vivian 为 s ...

  9. 《java入门第一季》之面向对象综合小案例

    需求: /*     教练和运动员案例         乒乓球运动员和篮球运动员.         乒乓球教练和篮球教练.         跟乒乓球相关的人员都需要学习英语.         分析,这 ...

  10. Xp输入法不见了

    早上打开电脑忽然发现以前的输入法(包括搜狗,智能ABC输入法)都不见了,光剩下微软拼音,而且添加输入法的按键是灰色的,不能使用 解决的办法: 打开记事本,输入以下内容:    ___________ ...