unoh.github.com

沢山の引数が必要な関数では配列で渡す

Thu Apr 13 07:58:23 -0700 2006

こんばんは、ケンジです。

ウノウでは週1回開発者の勉強会を行っています。先日の回、コードレビューで自分のコードを他の開発者に見てもらいました。コードを書く際のお作法のようなことなど、色々と改善できる部分を教えてもらいました。その中のひとつをご紹介します。

例えば様々な条件から人物を検索して、その結果を返すような関数が欲しいとき

function getPerson($name, $age, $sex, $hobby, $birth_y, $birth_m, $birth_d)
{
...
return $people;
}


こんな風にやたらと引数が増えたりするかもしれません。いろいろな条件で抽出できるようにして、汎用的に使いたいからです。けれど、これではどんな引数がどんな順番で書かれているかをわざわざ覚える必要があります。それに、男性を取り出したいとき、getPeople(,,'m',,,,)の様なことになりかねません。
こういうときは引数を配列にしてしまうのが良いです。


function getPeople($options)
{
...
return $people;
}
$options = array('sex'=>'m');
$people = getPeople($options);


これで、とっても分かりやすくなりました。
こういう初歩的なお作法も、知ってるのと知らないのとで、出来上がるコードはえらく違ったものになってきますね。