`

[转][Lii]自定义命名空间使用技巧之——提高代码可读性与易用性

阅读更多
http://uh.9ria.com/link.php?url=http://bbs.9ria.com%2Fviewthread.php%3Ftid%3D63573


自定义命名空间使用技巧之——提高代码可读性与易用性


  平时我们在写AS3的时候很少使用到自定义命名空间,我们的代码也确实可以完全避免使用自定义命名空间就可以完成所有功能。但是既然AS3有这个东西那么肯定有它能够胜任的工作,那么自定义命名空间到底能为我们带来些什么呢?今天我整理了一些自己的自定义命名空间使用技巧,希望能给大家带来帮助,希望能给大家一些启发。第一个技巧就是通过自定义命名空间来提高代码的可读性和易用性。

一:私有变量与封装变量
  平时我们学习写代码的时候所使用的命名空间基本就是以public、private、protected这三种为主,而在变量命名的技巧上则遵循驼峰命名法。但是碰到要封装的变量则会起一个和get/set差不多的变量名来表明他们之间的关系。比如一下代码:
private var _x:Number;
public function get x():Number{
        return this._x;
}
public function set x(value:Number):void{
        this._x = value;
}
private var _y:Number;
public function get y():Number{
        return this._y;
}
public function set y(value:Number):void{
        this._y = value;
}


那么在FlashBuilder中大纲显示的时候就发现排序的时候private的属性和public的属性被分隔开了如下图:



那么要是属性一都的话就会出现下面这种混乱情况:



在代码编写的时候寻找代码有时就会带来一些不便。

那么采用自定义命名空间的解决方案就是采用下面这种定义:
private namespace _;
_ var x:Number;
public function get x():Number{
        return _::x;
}
public function set x(value:Number):void{
        _::x = value;
}
_ var y:Number;
public function get y():Number{
        return _::y;
}
public function set y(value:Number):void{
        _::y = value;
}


  其实就是把原来我们用来代表private变量的”_”定义成一个private的namespace。这样用这个命名空间定义变量既保持原有的private属性又能和public变量同名,在方便起名记忆的同时,在大纲里的排序也改变了如下图:



我们会发现由于变量名相同,这些变量就自然而然的被连续的排列在一起,这样找变量的时候就方便了很多。

二、事件函数区分与定义
  写AS3自然会非常频繁的和事件机制打交道,那么在习惯了使用private、public命名空间使用的时候,事件回调函数的定义我以前基本都是用private function。而命名方面基本就是loader的名字后面加事件,比如:
private var xmlLoader:URLLoader = new URLLoader;
xmlLoader.addEventListener(Event.COMPLETE,xmlLoader_complete);
xmlLoader.addEventListener(IOErrorEvent.IO_ERROR,xmlLoader_ioError);

private function xmlLoader_complete(e:Event):void{
        //代码
}
private function xmlLoader_ioError (e:Event):void{
        //代码
}


那么一个类里类似代码一多大纲里就会出现非常混乱的局面,代码提示也会列出一大堆东西。
那么在运用自定义命名空间来写可以写成这样:
private namespace loader;
private namespace event;
private namespace ioErrorEvent;

loader var xml:URLLoader = new URLLoader;
loader::xml.addEventListener(Event.COMPLETE,event::xml_complete);
loader::xml.addEventListener(IOErrorEvent.IO_ERROR, ioErrorEvent::xml_ioError);

event function xmlLoader_complete(e:Event):void{
        //代码
}
ioErrorEvent function xml_ioError(e: IOErrorEvent):void{
        //代码
}


  基本就是以类型来定义一个命名空间,这样就可以很方便的区分函数的作用。在代码折叠函数的时候很容易区分函数,从而达到快速人肉寻找的目的。

  到这里可能有人会问,要是每次用都要去声明自定义命名空间那多累啊,每个类里都要多写一堆命名空间声明多麻烦。其实,我们可以用AS3的include功能来解决这个问题,我们可以建一个文件比如NS.as,所有的命名空间声明都写在这个里面。然后放到类库的任意位置,那么要使用他只需要include “xx/xx/NS.as”;就可以使用所有其中的命名空间了。

三、减少代码提示的范围
  平时我们使用public、private、protected命名空间的时候只要一用代码提示就会把以上的三种命名空间下的变量全部毫无保留的全部显示出来,长长的一串,要是机器性能不够好那就有的好卡几下了。那么如果我们合理的定义好自定义命名空间的话就可以按类别来显示我们需要的变量和函数。比如以下是我个人使用的一些定义规范:

命名空间也可以分public和private以及protected。
public的命名空间直接以字母开头,private的命名空间则以“_”开头,protected命名空间则以$开头。 “_”命名空间表示private var,”$”命名空间表示private function。
那么在一起就是这样:
public namespace event;
private namespace _event;
protected namespace $event;
private namespace _;
private namespace $;


  这样写代码也好看代码也好都有非常明确的指向性。而且在你输入命名空间的::的时候代码提示也只会给出这个命名空间下的变量以及函数,不会出现长长的那一串了。我个人使用下来发现在一些复杂的代码量比较大的项目中可以提升编写效率,因为类别分的比较清晰很少会因为找代码而头疼,在替换代码的时候由于有命名空间前缀也不容易替换错误。

  最后,这些自定义命名空间的使用技巧属于个人在代码生活中的一些总结,目的主要是为了提高自己的代码编写效率以及当代码长时间被搁置后重新浏览时方便阅读。可能并不适合所有人,主要是想起个抛砖引玉的作用,让大家更多的了解一下命名空间的可能性。其实写代码也并不是枯燥乏味的,在字里行间我们也可以发挥自己的想像力让自己的代码与众不同。最后谢谢大家阅读。

顺便补充一句。FLEX3以及之前版本对命名空间的代码提示什么的支持的不是很好。但是FB4里得到了很好的改善,要是能在大纲里显示命名空间简称那基本就是完美了。所以要应用上述方案的朋友最好使用FB4,其他的编辑器我还没试过,本人是FLEX派...
  • 大小: 32.9 KB
  • 大小: 33.3 KB
  • 大小: 10.5 KB
分享到:
评论

相关推荐

    [转] [Lii]3D翻页的一种制作方法

    【标题】:“[转] [Lii]3D翻页的一种制作方法” 这篇博客主要讨论的是如何实现一种3D翻页效果,这种效果通常在电子书或者数字展示中被广泛应用,为用户带来更加生动和真实的交互体验。在AS3(ActionScript 3)环境...

    Liitokala-Lii-500s-manual_Russianmanual_LiitokalaLii-500S_

    《Liitokala Lii-500S俄罗斯用户手册》是针对Liitokala Lii-500S充电器的专业指南,旨在帮助俄语使用者更好地理解和操作这款设备。Liitokala是一家知名的电池充电器制造商,其产品以其高质量和易用性著称。Lii-500S...

    [转]自制中文字库嵌入——单色图形面积压缩/加密法

    "Lii"可能代表与汉字相关的库或代码文件,而"org"可能是指某种组织结构或源代码格式,比如.org通常是Emacs Org模式的文件,用于组织文本和任务管理,但也可能是其他类型的文件。 在实际应用中,这样的技术可以用于...

    图像处理_烟雾检测matlab代码

    根据提供的信息,我们可以详细解析这段MATLAB代码涉及的图像处理技术及烟雾检测方法。这段代码主要用于从视频中检测烟雾区域,通过提取烟雾...此方法可以广泛应用于火灾早期预警系统中,提高火灾检测的准确性和及时性。

    安卓Android源码——猜拳游戏.zip

    8. **版本控制与打包**:项目中的`.zip`文件可能包含项目的源代码版本(如fingerGame.zip),这表明开发者可能使用了Git进行版本控制,并将项目打包成可分发的格式。 通过分析这个猜拳游戏项目,我们可以学习到...

    Thermodynamic assessment of the LiCl-LiH-LiI system

    LiCl-LiH-LiI体系的热力学优化,郭翠萍,杜振民,本文利用Calphad技术优化了LiCl-LiH,LiH-LiI,LiCl-LiH以及LiCl-LiH-LiI 体系。液相利用亚点阵模型处理成(Li+)(Cl-,H-,I-),三个终端相LiCl,LiH,LiI具

    l-曲线matlab代码-wat-lii:用于对时间分辨的激光诱导白炽(TiRe-LII)信号进行建模和分析的模块化程序

    l-曲线矩阵代码LII信号的模块化分析(wat-lii) 注意:此代码仍在构建中,应视为实验性代码。 滑铁卢大学开发的模块化程序,用于建模和分析时间分辨的激光诱导白炽灯(TiRe-LII)信号。 该程序旨在模拟来自各种材料...

    Android应用源码之猜拳游戏.zip

    这个压缩包文件“Android应用源码之猜拳游戏.zip”主要包含了一个Android平台上的猜拳游戏的源代码。从提供的文件列表来看,我们可以推测出以下几个关键知识点: 1. **Android应用开发**:这个项目显然是使用...

    R软件代码转换为matlab-wat-lii-error:Sipkens及其同事在题为“分析激光诱导的白炽信号的通用误差模型”的工作中描述的通

    R软件代码转换为matlab 通用光学信号误差模型的工具 这是一个软件包,最初与一起分发,该软件包评估光信号的一般误差模型,包括泊松-高斯噪声和重复观测之间(例如,两次激光照射之间)测量条件的变化。 特别关注的...

    Android应用源码之猜拳游戏

    而"DIYView.zip"可能包含了自定义视图的代码,用于创建游戏界面的图形元素,如石头、剪刀和布的图标。 在Android应用中,用户界面(UI)设计是至关重要的。"154707lii9438b6ki58536.jpg"、"154701qwaupphmhamukgwz....

    矩阵的LU分解_fortran版

    通过阅读和理解这些代码,我们可以深入学习如何在实际编程环境中应用LU分解,并了解FORTRAN编程的基本语法和技巧。 总之,LU分解是数值线性代数中的核心概念,FORTRAN作为科学计算的常用工具,两者结合能够高效地...

    matlab曲线标注代码-wat-lii-fluence:一个简单的Matlab实用程序,用于评估与时间分辨激光诱导白炽(TiRe-LII)能

    TiRe-LII 通量曲线的 Matlab 工具 这构成了一个软件包,演示了与 . 所包含的函数评估为:(1) 计算给定材料组的过渡或参考通量和温度,以及 (2) 评估通量曲线本身,以 J/cm 2为单位的无量纲值或通量和以开尔文为单位...

    猜拳游戏.rar

    1. "154707lii9438b6ki58536.jpg"、"154701qwaupphmhamukgwz.jpg"、"154704xipi3i7ukku3i3gi.jpg"、"154703h8tatn2nztyptt2t.jpg" - 这些可能是游戏的界面截图或者是与游戏相关的图片资源,可能包括游戏结果的展示...

    考热点选择题——07元素周期律[精选].doc

    6. 阴离子半径与阳离子半径之比最大,意味着阴离子半径大而阳离子半径小,这通常发生在高电荷和小原子半径的阳离子与低电荷和大原子半径的阴离子之间,因此LiI的比例可能是最大的。 7. 两种元素原子的核外电子层数...

    随机密码生成工具V2.0

    此工具是自己闲时制作,使用方便使用,无任何广告植入,欢迎使用! 自定义字符集,批量随机生成密码(口令),可选择大写英文字母(A-Z)、小写英文字母(a-z)、数字(0-9)、特殊字符(如:~!@#$%^&*()_-+={}[]\/...

    android猜拳游戏.zip

    这个项目是一个基于Android Studio的小游戏,用户可以与手机进行石头、剪刀、布的互动游戏。通过分析源代码,我们可以学习到Android应用开发中的核心概念和技术。 首先,我们有四个图像文件(154707lii9438b6ki...

    lii.ink-AngularJS

    lii.ink-AngularJS Lii.ink 分享网站类似于 HackerNews/reddit #WTF AngularJS 实现 lii.ink 项目,最初使用 php 开发。 基于网络上的各种教程。 #ToDo 几乎​​所有事情。

    matlab开发-InstanceInspector

    总的来说,InstanceInspector是MATLAB开发中一个强大的辅助工具,它使得模型的实例管理和参数配置变得更加直观和高效,特别是在代码生成过程中,能够帮助开发者创建高质量的代码,减少调试时间和提高软件性能。...

    SAP内部培训资料值得一看

    通过以上步骤,用户可以有效地利用ST05事务代码来监控和调试SAP系统的表缓冲区使用情况,进而提高系统的整体性能和稳定性。 综上所述,这份SAP内部培训资料提供了关于BADIs的搜索方法及使用ST05事务代码进行表缓冲...

Global site tag (gtag.js) - Google Analytics