いろきゅうの(元)はてなダイアリー

はてなダイアリーから移行中…

24時間プログラミング 20時間目 〜 仕様変更のフィールド

ちょっくら技術的な面で悩んでみる。

あるインターフェースは、別のクラス1つにしか継承されない事がわかっている場合って、微妙にインターフェース作るの負け組み感がありますよねぇー。

// IInterface は CClass にしか
// 継承されない事がわかっている
class IInterface
{
public:
  int Func(int);
  int Kanaria(int, double);
};


class CClass : public IInterface
{
public:
  int Func(int);
  int Kanaria(int, double);
  int Manna();
  int Misya(void*, void*, void*, void*); // 何この関数
};

CClass では、関数がえらい量あるにも関わらず、ある別のクラスがそのインスタンスを利用する場合、ごく一部の限られた関数しか利用しないとかいう事態になったとき(長いよ)、その利用する部分だけを Interface として抽出し、数限られた状態で扱ったほうが混乱しないよなー って思ったんです。

ただ、別にインターフェース別にしなくて CClass へのポインタを直接扱っちゃえば、結局同じことが出来る訳で…。寧ろ仮想関数経由で扱った場合、vtable 見に行く分遅くなってしまうという。で、今作ってるのがゲームじゃーないですか。

うーん。

Interface で必要な関数を抽出したものを扱ったほうが混乱しなくて済む事は済むんですけど…つまりはそれ、自分側の capacity 足りてないだけなんじゃねーの? とか思ってみたりするわけで。

うーん…



…んまぁ、今の時代は、CPUが無駄に高速になった故に、よっぽどの事がない限り「超高速なコード」を求める必要性は無く、寧ろ見やすいコードを目指した方が良いってのはわかるんですけどねー。




まぁ、分離化しちゃおうかしらー。