【发布时间】:2013-10-09 07:41:57
【问题描述】:
我有一大段代码可以处理某个参数的两个版本,比如说 ver1 和 ver2。
版本是一个运行时字段,我打算保留它,这样我就不必使用不同的标志构建代码,并且两个版本都可以使用相同的 lib 文件。
现在,有不同的字段适用于 ver1 和一些适用于 ver2。
所以在多个地方的代码中我必须这样做
if(ver1) {
// set fields specific to ver1
}
else {
// set fields specific to ver2
}
我不喜欢在代码中添加 if 语句的想法,因为代码看起来很丑。
这个有什么替代品吗?
我在想一些通用的内联/宏定义,其中只有在传递的标志为真时才设置字段?
另外,在优化方面,不应该比 if else 贵
@edit -- 代码内部组织的一些细节
无法发布代码的详细信息。但一个重要的事实是,它是一个庞大的遗留代码,需要升级并具有向后兼容性。
版本参数被传递给每个类,以决定要设置哪些字段以及忽略哪些字段。
【问题讨论】:
-
写两个版本的函数怎么样?
-
如果你在分支中有很多副作用并且不同版本尝试通过重构来减少分支。当您知道通常将哪些类型的字段设置在一起时,开始将这些字段提取到函数中。如果可能的通用功能,则提取一个接口。另请参阅:重构:改进现有代码的设计
标签: c++ c coding-style