パラメータのObject渡し

http://satoshi.blogs.com/life/2007/05/post_10.html

FlexBuilder(ていうかEclipse?)みたいなコード補完の賢いエディタ使ってると全然この辺り気にならないんですが、
されどAS2であれこれ作ってたときはオブジェクト渡しも結構やってたなぁ、と思い思いつつ。

  • この書き方だと、同じような呼び出しコードを何回も書くときに面倒な気がする
  • ちょっとしたスペルミスによるエラーが多発しそう

というわけで、たぶん自分だったら、上記のようにどうしても「引数の可読性」も含めてうまくやりたいときは、面倒だけど受け渡しする引数を保持するクラスをいちいち作る方向にすると思う。


コンストラクタに引数たくさん必要なクラス

class Sample{
  public function Sample(params:Params){
    a=params.str1;
    ...
  }
}

パラメータ保持クラス

class Params{
  public var str1:String;
  public var str2:String;
  public var num1:uint;
  public function Params(s1:String=null,s2:String=null,n1:uint=0){
    str1=s1;
    str2=s2;
    num1=n1;
  }
}

使う時(可読性を重視したいとき)

//若干面倒ですけど。
var param=new Params();
param.str1="hoge";
param.str2="fuga";
param.num1=12;

var sample=new Sample(param);

もしくは(ラクに書きたい時)

var sample=new Sample(new Params("hoge","fuga",12));

とか(コードは超適当なので間違っててもキニスルナ)。