2010-12-15 5 views
0

可能なクラス名の衝突の他に、ActionScript 3の「トレーサ」のような名前を持つトップレベル(パッケージ名なし)クラスを作成することに何らかの問題や副作用がありますか?そのようなクラスをトップレベルにして、コード内でimportステートメントを使用する必要はありません。これまで私は何の問題もなかった。AS3で最上位クラスを作成することの副作用ですか?

答えて

2

ベストプラクティスは、必要に応じていつでもパッケージを使用することです。あなたが構築しているものがユーティリティであれば、パッケージをutilに入れたほうが良いでしょう。 コア機能として見ることができる

あなたが開発している場合、何かは、トップレベルメンバーを実装するには問題はありません。

最後に計画しているのは、再利用性です。再利用することのできないもの(最終的な実装クラス)を構築していることが分かっている場合は、swfをコンパイルしても機能し続ける必要があるため、トップレベルのクラスになることを心配しないでください。

代わりに、あなたは枠組みとして再利用したい機能を作っている、場合は、おそらく将来の発展と柔軟性のためのフレームワークレベルメンバーとしてそれを置く方がいいでしょう。

+0

ありがとうございました。 Tracerはtraceコマンドを置き換えます。トレーサのトレース、再ルーティング、ログ、Tracer.write(... args)およびTracer.writeError(e:Error)の呼び出しのイベントのディスパッチ。再利用可能なSWCにコンパイルされたフレームワーク(フラッシュベースのOS [shell/gui/dock-controls/net-transactionなど])の一部です。トレーサは特別なケースです。一時的にどこでも使用できるので、インポート・ステートメントを必要としないトップレベルのクラスとして理に適っていると思います。興味があればTracerの実装を掲載しました:http://stackoverflow.com/questions/715738/creating-a-custom-trace-class-in-as3/4453850#4453850 – Triynko

+0

マークされた回答: "...問題はありませんトップレベルメンバーを実装しています。 [私が言及した可能な名前の衝突以外] – Triynko

2

zzzzBovさんの回答は良いアドバイスです。しかし、あなたの質問に明示的に答えてください:可能な名前の衝突は確かにあなたがやっていることに対する唯一の副作用です。

+0

+1。明白な答えをありがとう。他の答えは、[他の]問題もないが条件付きのトーンがあることを示しています。これは知っておくと良いことです。あなたのGecko btwを愛しています! – Triynko

1

私は考えていた可能性のある問題を説明しようとしています。それは技術的に名前衝突ではないため投稿しています(文字の場合が異なります)。

大文字と小文字の違い(たとえば、 "flash"、 "fl"、 "com"、またはカスタムパッケージ)の違いを除いて、トップレベルパッケージの名前を共有するトップレベルクラスがあるとします。 。 "var x:"のようなものを入力して完全修飾クラス名を入力しようとすると、FlashDevelopのようなプログラム内のコード補完エンジンは、 "Flash"クラス(存在する場合)ではなく、あなたが入力しようとしているかもしれない "フラッシュ"パッケージ。主に、それがそのように機能するという少しの感覚を作り出すため、非常に刺激的です。それはちょっとコードを完成させる必要があります。(

したがって、トップレベルのクラスには、

1

カスタムパッケージには、Vectorという名前のクラスがあり、Flash 9を使用していましたが、ファイルを保存するためにFlash 10を使用するまで、すべてが完璧でした。問題は私でした。エラー#1007:非コンストラクタでインスタンス化しようとしました。これを修正する唯一の方法は、ASクラスの名前を変更することでした。幸いにも、バックエンドクラスのバインディングJavaのクラスVectorで動作します。

トップレベルのクラスでは、Flashがクラスパッケージを処理していないようです。

この質問の日付がほぼ2年前であっても、これが誰かを助けてくれることを願っています。

関連する問題