2011年3月10日木曜日

typeidをテスト以外で使うのは勧めない

typeidは実行時型認識(RTTI)のためのオペレータです。
typeidオペレータはポインタまたは参照が指すオブジェクトの実際の型を返します。
が、、、
オブジェクト指向プログラミングを徹底した場合、typeidを使う必要はありません。
実際の型を判定に使わなくても、C++のポリモーフィズムを用いて動的に処理を変えることが可能です。
むしろ、typeidを許してしまうと(オブジェクト指向が徹底されず)ソースが腐ってしまう可能性が高くなってしまいます。
「割れ窓理論」からtypeidを実装では使わない方がいいでしょう、たぶん。

だけど、テストの場合は別です。
オブジェクトが所望の型に変換されているか確認する場合などは、typeidを使い型のテストができます。Unitテストは全体のコードに対して影響範囲も少ないので、テストのみtypeidを許す方がいいと思います(僕の職場ではそうしています)。

ということで、
typeidをテスト以外で使うのはお勧めしません。以上です。
*RTTIのもう一つのオペレータdynamic_castでも型のテストができます。

0 件のコメント:

コメントを投稿