• AS3编程规范


     

    整理了一些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"]等等
  • 相关阅读:
    docker建镜像
    注册路由的简易实现
    docker的小技巧记录(如果使用了更多会继续添加)
    Alembic使用
    SQLAlchemy的常用数据类型
    记录SQLAlchemy的基本使用
    linux创建桌面快捷方式
    vim编辑器命令
    redis发布订阅
    谨慎使用mysql的utf8
  • 原文地址:https://www.cnblogs.com/ahmm/p/8930204.html
Copyright © 2020-2023  润新知