refactoring - 什么是类型代码?

标签 refactoring terminology

我正在阅读 "Refactoring"通过 Martin Fowler .

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

什么是类型代码?

最佳答案

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

关于refactoring - 什么是类型代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10564212/

相关文章:

ruby - "k.send :hello"- 如果 k 是 "receiver",谁是发件人?

fortran - Fortran、Cobol、Basic 和 Forth 是高级编程语言吗?

Javascript:重构现有代码以分离关注点,我们如何使用类/原型(prototype)并从它自己的对象的方法中调用?

javascript - 在postman中创建常用函数或包含js文件?

c++ - C++ 中的依赖注入(inject)

c# - 如何交换两个 SyntaxNode (Roslyn C#)

java - 如何重构重复的一行代码java

string - 'String' 定义背后的历史

c# - 当您将对象数组转换为字符串数组时,它叫什么?

java - 表达式也可以是文字?