2012-05-12 17 views
1

私は"Refactoring"Martin Fowlerと読んでいます。タイプコードとは何ですか?

これまで私が見たことのない用語「タイプコード」があります。

タイプコードとは何ですか?

typedef enum Type { T_INT, T_FLOAT, T_DOUBLE, T_LONG } Type; 

typedef struct Datum 
{ 
    Type type; 
    union 
    { 
     int  i; 
     float f; 
     long l; 
     double d; 
    } u; 
} Datum; 

これは次のようにコーディングするつながる:タイプコードが表示可能な

+3

http://www.refactoring.com/catalog/replaceTypeCodeWithClass.html非常に良い例があります – Habib

+0

コメントありがとうございます。質問の前に、私はグーグルからそのリンクを読んだ。ありがとうございました。 –

答えて

3

一つコンテキストはunionタイプとCであり、ここで

Datum v; 

switch (v.type) 
{ 
case T_INT: 
    int_processing(v.u.i); 
    break; 
case T_FLOAT: 
    float_processing(v.u.f); 
    break; 
case T_DOUBLE: 
    double_processing(v.u.d); 
    break; 
} 

、からT_LONGを省略ました慎重に切り替えるかどうか?最近追加されましたが、このスイッチは必要な更新を得ていませんでしたか?

このようなコードがたくさんあり、T_UNSIGNEDを追加する必要がある場合は、修正する場所をたくさん見つける必要があります。 Cでは、「型を表すクラスを作成する」というような簡単な解決策はありません。これは実行できますが、より多くのオブジェクト指向言語より多くの労力がかかります。

ただし、「タイプコード」という用語は、この例のTypeタイプのようなものを指します。

+0

この例で非常に詳細で簡単に説明できます。今私はそれを理解した。あなたはタンク! –

0

タイプコードは、いくつかの目的のために独自の限定タイプを使用したい場合、回避策として、あなたの "タイプ"のすべての可能な値を表す数値または文字列定数を作成します。

関連する問題