アクセサー、つまりget~とかset~とかのあれですな。
時々、アクセサー作る意味がわからん、とかこんなん作ってもしゃーないやん、という意見を目にするんだけど案外そうでもないよ、という話。
無論、大前提としてある程度考えたデータ設計にしてあるというのは必要なんだけど、アクセサーを置いておくのはそれだけで(非常に薄いけれど)抽象化と言えなくもないと思う。
つまり、そのデータ構造のそのプロパティ、という物を「そのデータ構造からそのプロパティがデータとしては無くなったとしても」そのまま保持し続ける、という意味で抽象化と言えなくもないと思うんだ。
これは、データにインターフェイスを被せることによって実装としてはもっと効率的な実装を求めながらもデータとしては理解しやすいデータのままの外見を保てる、とも言える。
まぁ、ぶっちゃけ現場的な話をすると、いきなり仕様が変わっちゃってデータ構造にもっと複雑な多様性を持たせる必要が出てきた時でもこうやっとけばわりと対応しやすい、という事になるんだな。
たとえば、なんらかの座標値を今までは整数型で持っていました。
でも、突然今までの整数型の値を16倍した値にして扱わなければならなくなったとする。
(本当はこういう突然の事態こそなくさなきゃならないんだけどね)
そんな時でもアクセサーかましときゃ、その中で16倍してやればそれで終わる。
16倍した値を格納される可能性があるなら、16倍した値用の新しいアクセサーを用意して、そっちは実際には1/16してから格納するか、或いは別の(新しい)データ領域に格納させて古いデータと新しいデータをgetのアクセサーでシームレスに扱わせるか、などやりようがある。
まぁ、美しくないと言われればそれまでではあるんだけど、でもこれネイティブにデータ弄ってたらどうしようも無くなってた、という場面をどうにか出来る可能性があるってのは結構大きいと思うんだ。
という事で、主に現場的な意味でアクセサーって良いよ、という話でした。
スポンサーサイト