なぜ私がFindやGetComponentを避けるのか

Unity

「Unityで何かを作ってみる」の作例のソースコードを読んだは気づいたかもしれませんが、私はFindは絶対に使わないし、GetComponentはなるべく使わないようにしています。
Unity以外のプログラミング経験があり、かつ多人数での開発経験があるならば、同じようにFindやGetComponentは避けるんじゃないかなあと思うのですが、その理由を改めて書いておこうと思いました。
まず、前提として、FindもGetComponentも便利です。
なぜ便利かというと、対象物の名前と種類さえ分かっていれば、自分から対象物を見つけに行く事が出来るからです。
これは本当に便利で、あのコンポーネントの参照が欲しい!となった時に、コンポーネント側に手を入れずに参照を得ることが出来ます。
では、なぜ避けるのかというところなのですが、

なぜ避けるのかの理由

・他の人が読んだ時に、ソースコードのみでの理解がしづらい
・クラス指定での取得ならまだ分かるが、名前文字列で取得すると他の人が読んだ時に、名前文字列がどこから出てきたのか分かりづらい
・そもそもパフォーマンスが悪い
・自分から対象物を見つけに行くという書き方事を続けると、ソースコードがぐちゃぐちゃになりやすい
というのが私の考える理由になります。

対処方法

私の行う対処方法は単純です。
・見つけに行きたいコンポーネント側に参照を持たせる
・プロパティとして持たせておく
こうすることで、GetComponentを使わずに参照を得ることができます。
これが本当に正しいのかは分かっていないですが、自分で安心しちゃうんですよね。。
次のエントリーで実例で説明したいと思います。

Unity
スポンサーリンク
northprintをフォローする
おおよそ北の方向から

コメント