什么是类型码?

3
我正在阅读Martin Fowler"重构" 有一个术语“类型码”,我之前从未见过。
什么是类型码?

3
http://www.refactoring.com/catalog/replaceTypeCodeWithClass.html 这个网站有一个非常好的例子。 - undefined
谢谢评论。在提问之前,我通过谷歌搜索阅读了那个链接。谢谢。 - undefined
2个回答

6

类型代码可能出现的一种情况是在 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在switch语句中是否被故意省略了?它是最近添加的,但这个switch语句没有得到必要的更新吗?
当你有很多这样的代码,并且需要添加T_UNSIGNED时,你必须去找很多地方进行更正。在C中,你没有像“创建表示类型的类”这样简单的解决方案。它可以完成,但比使用更面向对象的语言需要更多的努力。
但是,“type code”这个术语指的是类似于示例中的“Type”类型的东西。

非常详细且简单易懂的解释,附带示例。现在我明白了。谢谢! - undefined

0
类型代码是当您想要为某个特定目的创建自己的有限类型时,可以通过创建一组数字或字符串常量来表示该“类型”的所有可能值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接