flash 編程習慣 小結
2024-09-12 17:51:08
供稿:網友
把這節寫在前面,也是為了讓開始接觸ActionScript編程的開發人員從一開始就養成好的編程和開發習慣。
1. 遵循命名規則
一個應用程序的命名規劃必須保持一致性和可讀性。任何一個實體的主要功能或用途必須能夠根據命名明顯的看出來。因為ActionScript是一個動態類型的語言,命名最好是包含有代表對象類型的后綴。一般而言,名詞_動詞和形容詞_名詞之類的語法是最常用的命名方式,如:
影片名字:my_movie.swf
URL實體:course_list_output
組件或對象名稱:chat_mc
變量或屬性:userName
方法和變量的名稱應該以小寫字母開頭,對象和對象的構造方法應該大寫。命名變量的時候使用大小寫混和的方式,并且使用字母打頭,還可以包含數字和下劃線。
下面的一些命名是非法的:
_count =5 ;//首字符不能使用下劃線
5count = 0;//首字符不能使用數字
foo/bar = true;//包含非法字符
另外,ActionScript使用的保留字不能用來命名變量。
ActionScript是基于ECMAScript,所以我們可以根據ECMAScript的規范來命名。如:
course_list_output = "foo"; //全部小寫,使用下劃線分割字串
courseListOutput = "foo"; // 大小寫混和的方式
BASEURL = http://www.flash8.net; // 常量使用全部大寫
MAXCOUNTLIMIT = 10;
MyObject = function(){ }; // 構造函數
f = new MyObject(); // 對象
注意;良好的命名規范還可以使用Flash的代碼提示功能。
2. 給你的代碼添加注釋
使用代碼注釋能夠使得程序更清晰,也便于我們閱讀。Flash支持的代碼注釋方法有兩種: 單行注釋,通常用于變量的說明
var clicks = 0; // variable for number of button clicks
多行注釋,通常用于功能說明和大段文字的注釋:
/*
Initialize the clicks variable that keeps track of the number of times
the button has been clicked.
*/ 一些具有特定意思的注釋方法: // :TODO: topic
表明一個主題的開始
// :BUG: [bugid] topic
顯示了一個BUG所在
// :KLUDGE:
表明下面的代碼并不完善,可能存在問題
// :TRICKY:
告訴開發人員下面的代碼具有相互作用,修改之前請謹慎
3. 保持代碼的整體性
無論什么情況,應該盡可能保證所有代碼在同一個位置,這樣使得代碼更容易搜索和調試。我們在調試程序的時候很大的困難就是定位代碼,如果大部分代碼都集中在同一幀,問題就比較好解決了。通常,我們把代碼都放在第一幀中,并且單獨放在最頂層。如果在第一幀中集中了大量的代碼,記得用注釋標記區分,并在開頭加上代碼說明
// 視頻語音聊天系統
// FCAVPresence組件
// Copyright ◎2002 Macromedia, Inc. All rights reserved.
// 完 善: Liu21st, Liu21st@126.com
//--------------------------------------------------------- 在獨立的功能模塊前面加上類似的標注:
// 參數初始化
file://---------------------------------------------------------
4. 初始化應用程序
記得一定要初始化你的應用程序,init函數應該是你的應用程序類的第一個函數,如果使用面向對象的編程方式則應該在構造函數中進線初始化工作。該函數只是對應用程序中的變量和對象初始化,其它的調用可以通過事件驅動。
下面的例子可以說明如何進線初始化
function FCAVPresenceClass() {
this.init();
}
FCAVPresenceClass.prototype.init = function() {
this.name = (this._name == null ? "_DEFAULT_" : this._name);
this.prefix = "FCAVPresence." + this.name + ".";
};
5.使用局部變量
所有的局部變量使用關鍵字var來申明,這樣可以避免被全局變量訪問,更重要的是,可以保證變量不被覆蓋和混淆程序邏輯。例如,下面的代碼沒有使用var來申明,覆蓋了其它變量。
counter = 7;
function loopTest()
{
trace(counter);
for(counter = 0; counter < 5; counter++)
{
trace(counter);
}
}
trace(counter);
loopTest();
trace(counter);
輸出結果為:
7
7
0
1
2
3
4
5
6. 創建對象時使用原型添加方法和屬性
當我們創建一個對象的時候,應當使用原型方式來添加對象的方法或屬性,使得該方法或屬性能夠被所有該對象或子對象的實體所訪問。這種能夠確保內存中每個函數只有一份拷貝。作為一般的規則,不要在構造函數中定義方法。下面是一個正確的例子:
// Best practice for creating an object
MyObject = function()
{ }
MyObject.prototype.name = "";
MyObject.prototype.setName = function(name)
{
this.name = name;
}
MyObject.prototype.getName = function()
{
return this.name;
}
下面這段代碼是不可取的:
// Less desirable practice for creating an object
MyObject = function()
{
this.name = "";
this.setName = function(name)
{
this.name = name;
}
this.getName = function()
{
return this.name;
}
}
使用上面的方式在每個對象的實體被創建的時候都會實體重新復制每一個屬性和方法,會加重系統的內存開銷。
7. 規范命名方式獲取代碼提示功能
不再是需要定義類似 _mc 之類的命名才會顯示代碼提示
但是需要使用as2.0的規范來書寫代碼,如:
1 :
var members:Array = new Array();
然后我們在輸入members. ,Flash 就會顯示可用于 Array 對象的方法和屬性的列表
(關鍵是 members:Array 起的作用,其實我們在變量名稱后面打:的時候自動會給出所有支持的對象的列表)
但并不是要我們在使用面向對象編程的時候不需要注意命名規范了