2

我正在阅读Martin Fowler“重构”

有一个我以前从未见过的术语“类型代码”。

什么是类型代码?

4

2 回答 2

5

可以出现类型代码的一个上下文是在 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示例中的类型。

于 2012-05-12T15:36:13.507 回答
0

类型代码是当您出于某种目的想要拥有自己的有限类型时,作为一种解决方法,创建一堆数字或字符串常量,它们代表您的“类型”的所有可能值。

于 2014-02-02T11:51:38.033 回答