ActionScript中的代码注释常用的ASDoc规范

来源:互联网 发布:淘宝口红小样是真的吗 编辑:程序博客网 时间:2024/05/22 03:32

转自:http://blog.csdn.net/monitor1394/article/details/7669213


       优美的注释是优美代码的重要组成部分。好的注释不仅可以让别人快速理解代码,部分语言还可以用注释生成对应的html文档,在不看源码的情况下快速了解框架,或后期的具体查询。熟悉Java 的程序猿都知道Javadoc,不知用ActionScript的程序猿都知道asdoc不?asdoc和Javadoc类似,是adobe官方提供的ActionScript的API文档生成工具。要想能成功生成API文档,代码的注释需要满足一定的规范。

结合例子,列举一下我常用的规范:

  • 用于生成API文档的注释必须用(/**  */)注释格式,注释内带<xx>的必须为html标签,且要有</xx>与之匹配。 常用的html标签有:
  1. <p></p>:段落
  2. <i></i>:斜体
  3. <b></b>:粗体
  4. <ul></ul>:无序列表
  5. <ol></ol>:有序列表
  6. <li></li>:列表项,有序列表和无序列表中都使用 <li> 标签
  7. <code></code>:源程序代码
  • 在类的上方写关于该类的介绍以及注意事项或使用例子等注释。若类带[Bindable] [SWF]等标签,则注释必须写于类声明的上一行。
  • 类必须用@author 写明作者和代码编写时间,方便其他开发人员及时与原作者沟通。
  • 与该类相关的其他类用@see 标明,方便查阅者快速了解此类。
  • 声明为public的变量必须写用(/**  */)写清楚注释。
  • 类的构造方法要写清楚构造什么对象,参数和异常。
  • 类的get或set方法可只对get方法进行注释,且不用@return
  • 类的其他public方法要注释好该方法的功能、参数、参考方法和返回值等。
  • 类方法中写例子时用@example标签,且代码直接粘贴在<listing version="3.0"></listing>之间。

        以下是我写的用于演示且带有详细注释的测试代码。其中很多内容可能和类无关,只是想尽可能多地列出一些常用的注释规范:

[javascript] view plaincopy
  1. package test {  
  2.     import flash.utils.getTimer;  
  3.       
  4.     [SWF(backgroundColor="#000000", frameRate="50", width="1000", height="600")]  
  5.     /** 
  6.      * 性能测试 
  7.      * <p> 
  8.      * <code>Test</code>类用于测试<code>Vector</code>类和<code>Array</code>类的<i>性能</i>。 
  9.      * 一般而言,<code>Vector</code>类的读写访问速度比<code>Array</code>类, 
  10.      * 若为<code>Vector</code>分配特定长度并将其长度设为固定值,可进一步提高<i>性能</i>。 
  11.      * </p> 
  12.      * <p> 
  13.      * 当前用以下方案进行测试: 
  14.      * <ol> 
  15.      * <li>初始化指定大小的<code>Array</code>数组需要的时间</li> 
  16.      * <li>初始化指定大小的<code>Vector</code>数组需要的时间,<code>Vector</code>使用默认值</li> 
  17.      * <li>初始化指定大小的<code>Vector</code>数组需要的时间,<code>Vector</code>分配长度并设为固定值</li> 
  18.      * <li><code>Array</code>数组查询某个值需要的时间</li> 
  19.      * <li><code>Vector</code>数组查询某个值需要的时间</li> 
  20.      * </ol> 
  21.      * </p> 
  22.      * <p> 
  23.      * 下面代码演示如何使用<code>Test</code>类进行测试: 
  24.      * <listing version="3.0"> 
  25. var test1:Test=new Test("Vector默认大小",10000000,false); 
  26. var test2:Test=new Test("Vector预分配大小",10000000,true); 
  27. test1.start(); 
  28. test2.start(); 
  29. </listing> 
  30.      * </p> 
  31.      * <p><b>注:</b>尽可能使用<code>Vector</code>对象的API,因为他们的运算速度可能更快。</p> 
  32.      *  
  33.      * @see Vector 
  34.      * @see Array 
  35.      *  
  36.      * @since ActionScript 3.0 
  37.      *  
  38.      * @author monitor 
  39.      * Created on 2012-6-16,下午2:20:38 
  40.      */  
  41.     public class Test {  
  42.         /** 数组默认大小 */  
  43.         public static const SIZE:int=10000;  
  44.         private var _name:String;  
  45.         private var _size:int;  
  46.         private var _flag:Boolean;  
  47.           
  48.         /** 
  49.          * 构造一个指定名称和容量并指示<code>Vector</code>是否指定固定长度的<code>Test</code> 
  50.          * @param name 名称 
  51.          * @param size 数组容量大小,最大值为10000000 
  52.          * @param flag <code>Vector</code>是否指定固定长度 
  53.          * @throws ArgumentError 分配的数组大于10000000 
  54.          */  
  55.         public function Test(name:String,size:int,flag:Boolean){  
  56.             if(size>1000000){  
  57.                 throw new ArgumentError("分配大小过大");  
  58.             }  
  59.             _name=name;  
  60.             _size=size;  
  61.             _flag=flag;  
  62.         }  
  63.           
  64.         /** 
  65.          * 开始测试并输出测试结果 
  66.          * @example 
  67.          * 下面代码演示如何使用<code>Test</code>类进行测试: 
  68.          * <listing version="3.0"> 
  69. var test1:Test=new Test("Vector默认大小",10000000,false); 
  70. var test2:Test=new Test("Vector预分配大小",10000000,true); 
  71. test1.start(); 
  72. test2.start(); 
  73. </listing> 
  74.          *  
  75.          * @see #getSize() 
  76.          * @see Array#indexOf() 
  77.          */  
  78.         public function start():void{  
  79.             var start:Number;  
  80.             var time1:Number,time2:Number,time3:Number,time4:Number;  
  81.             var i:int=0;  
  82.             start=getTimer();  
  83.             var array:Array=new Array();  
  84.             for(i=0;i<_size;i++){  
  85.                 array[i]=i;  
  86.             }  
  87.             time1=getTimer()-start;  
  88.             start=getTimer();  
  89.             var vector:Vector.<Number>;  
  90.             if(_flag){  
  91.                 vector=new Vector.<Number>(_size,true);  
  92.             }else{  
  93.                 vector=new Vector.<Number>();  
  94.             }  
  95.             for(i=0;i<_size;i++){  
  96.                 vector[i]=i;  
  97.             }  
  98.             time2=getTimer()-start;  
  99.             var find:int=_size/2;  
  100.             start=getTimer();  
  101.             array.indexOf(find);  
  102.             time3=getTimer()-start;  
  103.             start=getTimer();  
  104.             vector.indexOf(find);  
  105.             time4=getTimer()-start;  
  106.             trace("Vector和Array性能测试:"+_name);  
  107.             trace("初始化大小为 "+_size+" 的Array 花费:"+time1+" ms");  
  108.             trace("初始化大小为 "+_size+" 的Vector花费:"+time2+" ms");  
  109.             trace("Vector 比 Array 快:"+(time1-time2)+" ms");  
  110.             trace("查找 "+find+" ,Array 花费:"+time3+" ms");  
  111.             trace("查找 "+find+" ,Vector花费:"+time4+" ms");  
  112.         }  
  113.           
  114.         /** 
  115.          * 名称 
  116.          */  
  117.         public function get name():String{  
  118.             return _name;  
  119.         }  
  120.           
  121.         public function set name(name:String):void{  
  122.             _name=name;  
  123.         }  
  124.           
  125.         /** 
  126.          * 获得数组大小 
  127.          * @return 数组大小 
  128.          */  
  129.         public function getSize():int{  
  130.             return _size;  
  131.         }  
  132.           
  133.         /** 
  134.          * 获得<code>Vector</code>是否使用固定值的标识 
  135.          * @reutrn 使用固定值返回<code>true</code>,否则返回<code>false</code> 
  136.          */  
  137.         public function getFlag():Boolean{  
  138.             return _flag;  
  139.         }  
  140.           
  141.     }  
  142. }  


        示例1:

        


            对应的API文档如下:


示例2:


对应的API文档为:

示例3:


             对应的API文档为:


:示例4:

             对应的API文档为:


示例5:

            对应的API文档为:


示例6:

             对应的API文档为:




原创粉丝点击