2

コンストラクターに15個のパラメーターがあるSpriteを拡張するカスタムクラス(またはコンポーネント?)を設計しました。最初のパラメーターのみが必要であり、残りの14個にはデフォルト値が割り当てられています。すべてが必要です。

最初に必要なパラメーターを除く各パラメーターは、実際にはプロパティセッターです。このクラスにはパブリックセッター関数とゲッター関数も含まれており、構築後の実行時にプロパティを変更できます。

デスクトップ(27 "画面)でクラスを作成しましたが、13"ラップトップでクラスを使用しているときに問題が発生する可能性があることに気付きました。コードのヒントが長すぎるため、画面の端を超えて拡張されていました。

セッター関数が使用可能な場合、コンストラクターのパラメーターとしてオプションのセッターを含めるのが通常/ベストプラクティスですか、それともセッターは常にコンストラクターから分離する必要がありますか?

4

1 に答える 1

2

私の意見では、コードの一部をインスタンス化するクラスでの使いやすさに帰着します。すべて設定またはすべてスキップする14個のパラメーターがある場合は、おそらくそれが最善の解決策です。

var defaultRectangle:Rectangle = new Rectangle(); //square of 1 x 1)    
var customRectangle:Rectangle = new Rectangle(0,0,  2,0  2,2,  0,2);

しかし、14個のパラメーターのいくつかがオプションである場合、読みにくくなります。個別のゲッター/セッターを使用する方が読みやすいか、パラメーターオブジェクト(名前付きパラメーターを模倣)のどちらかだと思います。

//which parameter means what?
var girlfriend:Girl = new Girl("Blue", 0, 0, "", "", 1.8, 0, "", 140); 

//named parameters 
var girlfriend:Girl = new Girl({eyeColor: "Blue", height:1.8, iq:140});

//setters
var girlfriend:Girl = new Girl();
girlfriend.eyeColor = "Blue";
girlfriend.height = 1.8;
girlfriend.iq = 140;

私は個人的に「ビュー」を操作するときに可能な限りモデルを使用するようにしています。したがって、オブジェクトがスプライトであり、したがってビューである場合。おそらく最善のアプローチは次のとおりです。

var friend:Person = new Person({name: "Ford Prefect"});
var profileView:ProfileView = new ProfileView(friend);
addChild(profileView);
于 2010-11-11T09:46:18.413 に答える