我们拥有经过数十年开发的大型 C 代码库。代码的一个特点是对函数指针和伪继承有很大的依赖。成语(如讨论的 here )如下所示:
typedef struct twod_ {
double x, y;
} twod;
typedef struct threed_ {
twod super;
double z;
} threed;
threed *point_3d;
twod *point_2d = (twod *)point3d;
此时point_2d->x
和point_3d->x
是同一 block 内存。
我的问题是:
- 这个成语在现代生产代码中是否仍然流行? (任何推荐的开源示例)
- 这段代码对性能有要求——这个惯用语对速度和/或内存使用有帮助吗?
- 它的实现方式(或由于多年的代码膨胀)现在感觉有点像意大利面条代码——一般来说,这是实现问题还是习惯用法?或者换句话说,在理想世界中,500k LOC 的这个成语是否会被快速理解?
当然,“如果它没坏,就不要修理它”这句格言值得牢记;然而,目前这并不能真正帮助我们,所以我们认为我们可能需要更深入地进行重构......
谢谢!
最佳答案
关于c - C : good, 中的继承不好,还是其他?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8929082/