« 引数の個数 | メイン | マルチスレッドとアトミック/インターロック »
2008年01月14日
思う事/思い付いた事:: クラスメンバ渡しと引数渡し
Tweet @jin1016をフォロークラスのメンバに値を入れて、メソッドをコールするか、引数にすべて入れて渡すかはよく迷う。
クラス自身の責務に関係している値であれば、メンバに入れるのは気にならないが、一時的なものの場合はメンバとして持たせるのではなく、引数に入れて渡そうとする。
それが、クラス内部のprivateなメソッドで外部から呼べないとしても、そのような形にしがちだ。
そして、よくクラス非依存になり、static メンバでも問題なくなったりする。
なぜそのような作りにするのか?
それは、出来るだけ依存性を少なくしたいからと言うのが大きい。
クラスからも独立して使おうとすれば使えるように。
ただ、そのようなメソッドを他のクラスに持っていって使ったことは記憶している限りない。
つまり、そのようなアプローチはまったく意味なしとも言える。
もうひとつの理由は、マルチスレッドだろう。
クラスのメンバを経由してしまうと、リエントラントではなくなってしまう。
マルチスレッドのことはよく失念してしまって、気付かないうちに値が変わって、なんか動作がおかしい、なぜ?と言うことが良くある。
しっかり意識して書いている時はいいのだが、そうでないときはミスをする。
そのことが頭の片隅にあるため、クラスのメンバに値を入れて受け渡しすると言うのを無意識のうちに避けているのかもしれない。
投稿者 Takenori : 2008年01月14日 21:44
comments powered by Disqus