2010-12-15 19 views
0

除了可能的類名衝突之外,在ActionScript 3中創建一個名爲「Tracer」的頂級(無包名)類會有什麼問題或副作用嗎?我想保持這樣一個頂級的類,所以我不必在我的代碼中使用import語句。到目前爲止,我沒有遇到任何問題。在AS3中創建頂級類的副作用?

回答

2

最佳做法是在適當時使用包裝。如果您正在構建的是實用程序,最好將它放在一個util包中,而不要放在頂層。

如果你正在開發的東西,可以被看作是核心功能,有在實施頂級成員沒有問題。

計劃的最後一件事是可重用性。如果你知道你正在構建一個你永遠不會重用的東西(最終實現類),不要太擔心它是一個頂級類,因爲它應該繼續工作,一旦你編譯了swf 。

相反,如果你讓你想重用爲框架一個功能,你可能會更好過把它作爲未來發展的靈活性框架級別成員。

+0

謝謝。 Tracer替換了跟蹤命令。跟蹤器跟蹤,重新路由,記錄和分派事件以調用Tracer.write(... args)和Tracer.writeError(e:Error)。它是一個框架(基於閃存的操作系統[shell/gui/dock-controls/net-transaction等])的一部分,編譯成可重用的SWC。 Tracer是一種特殊情況,因爲它可以在任何地方暫時使用,所以我認爲它作爲不需要導入語句的頂級類是有意義的。如果感興趣的話,我在這裏發佈了Tracer的實現:http://stackoverflow.com/questions/715738/creating-a-custom-trace-class-in-as3/4453850#4453850 – Triynko 2010-12-15 23:12:34

+0

有標記的答案:「...這裏沒有問題實施頂級會員「。 [除了我提到的可能的名稱衝突] – Triynko 2010-12-16 15:30:34

2

zzzzBov的回答是很好的建議。但要明確回答你的問題:可能的名稱衝突確實是你正在做的唯一的副作用。

+0

+1。謝謝你的明確答案。其他回答說,沒有其他問題,但有條件的語氣。這是很好的知道。愛你的壁虎btw! – Triynko 2010-12-16 15:33:50

1

我即將描述一個我想到的可能的問題,並且我發佈它,因爲它在技術上不是名稱衝突(字母大小寫不同)。

假設您有一個頂級類,除了字母大小寫(例如「flash」,「fl」,「com」或自定義程序包)之外,還可以共享頂級程序包的名稱, 。如果你輸入類似「var x:」的東西,然後嘗試輸入完全限定的類名...那麼FlashDevelop等程序中的代碼完成引擎將默認爲「Flash」類(如果存在),而不是您可能正嘗試輸入的「flash」程序包。這非常刺激,主要是因爲它有點意義,它的功能是這樣的,它必須代碼完成其中一個或另一個:所以要非常小心地命名頂級類的東西是拼寫(頂級或其他)

1

我在自定義軟件包中使用了一個名爲Vector的類,並且使用了flash 9,並且所有工作都很完美,直到我必須使用flash 10來保存文件,問題是我無法創建我的類Vector的實例,由於錯誤TypeError:錯誤#1007:在非構造函數上嘗試實例化修復它的唯一方法是更改​​AS類的名稱,幸運的是後端類的綁定適用於我的Java類Vector。

似乎Flash並未照顧頂級類的類包。

我希望這可以幫助某人,即使這個問題的日期差不多是2年前。