ActionScript中的代碼註釋常用的ASDoc規範

        優美的註釋是優美代碼的重要組成部分。好的註釋不僅可以讓別人快速理解代碼,部分語言還可以用註釋生成對應的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>之間。

        以下是我寫的用於演示且帶有詳細註釋的測試代碼。其中很多內容可能和類無關,只是想儘可能多地列出一些常用的註釋規範:

package test {
	import flash.utils.getTimer;
	
	[SWF(backgroundColor="#000000", frameRate="50", width="1000", height="600")]
	/**
	 * 性能測試
	 * <p>
	 * <code>Test</code>類用於測試<code>Vector</code>類和<code>Array</code>類的<i>性能</i>。
	 * 一般而言,<code>Vector</code>類的讀寫訪問速度比<code>Array</code>類,
	 * 若爲<code>Vector</code>分配特定長度並將其長度設爲固定值,可進一步提高<i>性能</i>。
	 * </p>
	 * <p>
	 * 當前用以下方案進行測試:
	 * <ol>
	 * <li>初始化指定大小的<code>Array</code>數組需要的時間</li>
	 * <li>初始化指定大小的<code>Vector</code>數組需要的時間,<code>Vector</code>使用默認值</li>
	 * <li>初始化指定大小的<code>Vector</code>數組需要的時間,<code>Vector</code>分配長度並設爲固定值</li>
	 * <li><code>Array</code>數組查詢某個值需要的時間</li>
	 * <li><code>Vector</code>數組查詢某個值需要的時間</li>
	 * </ol>
	 * </p>
	 * <p>
	 * 下面代碼演示如何使用<code>Test</code>類進行測試:
	 * <listing version="3.0">
var test1:Test=new Test("Vector默認大小",10000000,false);
var test2:Test=new Test("Vector預分配大小",10000000,true);
test1.start();
test2.start();
</listing>
	 * </p>
	 * <p><b>注:</b>儘可能使用<code>Vector</code>對象的API,因爲他們的運算速度可能更快。</p>
	 * 
	 * @see Vector
	 * @see Array
	 * 
	 * @since ActionScript 3.0
	 * 
	 * @author monitor
	 * Created on 2012-6-16,下午2:20:38
	 */
	public class Test {
		/** 數組默認大小 */
		public static const SIZE:int=10000;
		private var _name:String;
		private var _size:int;
		private var _flag:Boolean;
		
		/**
		 * 構造一個指定名稱和容量並指示<code>Vector</code>是否指定固定長度的<code>Test</code>
		 * @param name 名稱
		 * @param size 數組容量大小,最大值爲10000000
		 * @param flag <code>Vector</code>是否指定固定長度
		 * @throws ArgumentError 分配的數組大於10000000
		 */
		public function Test(name:String,size:int,flag:Boolean){
			if(size>1000000){
				throw new ArgumentError("分配大小過大");
			}
			_name=name;
			_size=size;
			_flag=flag;
		}
		
		/**
		 * 開始測試並輸出測試結果
		 * @example
		 * 下面代碼演示如何使用<code>Test</code>類進行測試:
		 * <listing version="3.0">
var test1:Test=new Test("Vector默認大小",10000000,false);
var test2:Test=new Test("Vector預分配大小",10000000,true);
test1.start();
test2.start();
</listing>
		 * 
		 * @see #getSize()
		 * @see Array#indexOf()
		 */
		public function start():void{
			var start:Number;
			var time1:Number,time2:Number,time3:Number,time4:Number;
			var i:int=0;
			start=getTimer();
			var array:Array=new Array();
			for(i=0;i<_size;i++){
				array[i]=i;
			}
			time1=getTimer()-start;
			start=getTimer();
			var vector:Vector.<Number>;
			if(_flag){
				vector=new Vector.<Number>(_size,true);
			}else{
				vector=new Vector.<Number>();
			}
			for(i=0;i<_size;i++){
				vector[i]=i;
			}
			time2=getTimer()-start;
			var find:int=_size/2;
			start=getTimer();
			array.indexOf(find);
			time3=getTimer()-start;
			start=getTimer();
			vector.indexOf(find);
			time4=getTimer()-start;
			trace("Vector和Array性能測試:"+_name);
			trace("初始化大小爲 "+_size+" 的Array 花費:"+time1+" ms");
			trace("初始化大小爲 "+_size+" 的Vector花費:"+time2+" ms");
			trace("Vector 比 Array 快:"+(time1-time2)+" ms");
			trace("查找 "+find+" ,Array 花費:"+time3+" ms");
			trace("查找 "+find+" ,Vector花費:"+time4+" ms");
		}
		
	    /**
	     * 名稱
	     */
		public function get name():String{
			return _name;
		}
		
		public function set name(name:String):void{
			_name=name;
		}
		
		/**
		 * 獲得數組大小
		 * @return 數組大小
		 */
		public function getSize():int{
			return _size;
		}
		
		/**
		 * 獲得<code>Vector</code>是否使用固定值的標識
		 * @reutrn 使用固定值返回<code>true</code>,否則返回<code>false</code>
		 */
		public function getFlag():Boolean{
			return _flag;
		}
		
	}
}


        示例1:

       


            對應的API文檔如下:


示例2:


對應的API文檔爲:

示例3:


             對應的API文檔爲:


:示例4:

             對應的API文檔爲:


示例5:

            對應的API文檔爲:


示例6:

             對應的API文檔爲:






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章