« エラーコードを調べる | メイン | クラスメンバ渡しと引数渡し »

2008年01月14日

思う事/思い付いた事:: 引数の個数

    

初めに引数の個数を強く意識したのは、組み込み開発の時のターゲットとそのコンパイラの仕様からだった。
そのコンパイラでは、正確な個数は覚えていないが確か4個まではレジスタ渡しで、それ以上はスタック渡しとなっていた。
つまり、効率を考え出来るだけ引数は4個以内になるように作っていた。
当然、C++ のクラスのメンバ関数では、暗黙的に this が渡されるので 3個以内にしていた。
※ PCでも、呼び出し規約に __fastcall を使えばレジスタ渡しになりレジスタ渡し出来る個数に上限が発生する。ただ、PCの場合は、__fastcall を使い、引数の個数に気を付けても、効果が上がるほど速くなるかどうかは疑問。

そのターゲットから離れて開発をし始めても、だいたい4個ぐらいを目安にしているが、最近は6個ぐらいを限度として書いている。
なぜかと言えば、個数が増えると見辛くなるから。
では、効率云々ではなく、見易さとして考えた場合は何個ぐらいが妥当なのだろうか?

人が瞬間的に判別できる数は3、4個ぐらいという話がある。
テーブルの上にみかんがあるとして、4個ぐらいまでなら、瞬間的に4個と確かな自信を持って言える。
ただ、5個、6個となってくると少し自信がなくなると言うか、瞬間的に認識できないように思う。
6個ぐらいかな?程度に感じる。
でも、この個数は経験によってある程度増えるような気がする。
瞬間的に確かな自身を持って言える数はあまり変わらないが、たぶん6個とか7個とかいうレベルであれば判別でき、誤りも少ない。
このことから考えると、個数を瞬時に認識できると言う意味では、4個と言う目安は悪くないのではないだろうか。
また、6個ぐらいが限度というのも。

他の切り口で見れば、また個数は変わるだろうけど、私は現状では4個以内を目安にし、6個ぐらいが限度として書くかな。
出来れば、4個以内にしたいが。


関連記事・続きの記事

クラスメンバ渡しと引数渡し
クラスのメンバに値を入れて、メソッドをコールするか、引数にすべて入れて渡すかはよ... [続きを読む]


投稿者 Takenori : 2008年01月14日 16:15




comments powered by Disqus
Total : Today : Yesterday : なかのひと