2012-05-12 3 views
1

Я читаю "Refactoring" от Martin Fowler.Что такое код типа?

Существует термин «код типа», который я никогда раньше не видел.

Что такое код типа?

+3

http://www.refactoring.com/catalog/replaceTypeCodeWithClass.html у него есть очень хороший пример – Habib

+0

Благодарим за комментарий. Перед вопросом, я прочитал эту ссылку от googling. Спасибо. –

ответ

3

Один контекст, в котором код типа может появиться в C с типом union:

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; 

Это приводит к коду, как:

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

Код типа, когда вы хотите иметь свой собственный ограниченный тип для какой-либо цели и, как работа, создать кучу числовых или строковых констант, которые представляют все возможные значения вашего «типа».