1
10
我可以建议将函数重命名为FoobarIfEnabled(),然后检查函数吗? 从一个伟大的语言不可知论者那里大量窃取 answer to one of my own questions ,编程时,我们有以下问题:
如果在函数外部执行检查,则可能会在某个位置丢失它。如果你想改变它的行为,你就必须找到它被调用的所有地方并修复它。这是一个违反原则1的维护噩梦。通过在名称中添加“IfEnabled”或类似的内容,现在它不仅是正确的,而且是清楚的。你怎么能打败它? 不必担心性能,除非最终速度不令人满意,并且您已经确定这是瓶颈(不太可能)。 我建议你按照上面的链接阅读,因为这是一个非常有用的答案,给了我很多思考。 |
2
2
方案3:
[编辑:这里是选项4,我怀疑是过度工程,但你永远不知道:
然后你可以用:
|
3
1
你的身体状况如何
如果总是需要检查条件,我会把它放在函数中。在这里遵循干燥的原则:不要重复你自己。另一个可能有用的妙语是SRP——单一责任原则——做一件事,并把它做好。 |
4
1
在头文件中,如果foobar总是使用相同数量的参数, #ifdef ENABLE_FOOBAR #define maybe_foobar(x) foobar(x) #else #define maybe_foobar(x) #endif 如果FooBar可以接受可变数量的参数,不知道如何在C++或更大的C语言中实现。 (刚刚注意到语言不可知标记。好吧,上面的技术就是我建议的在它工作的语言中使用的技术;对于有这些功能但没有宏的语言,可以使用内联函数)。 |
5
0
选项2,减少代码,并确保如您所建议的那样定义常量。 |
6
0
因为这显然只用于foobar()函数,所以选项2应该是您的选择。这意味着测试只在一个地方进行,而且您的代码更具可读性。 |
John V · 是否存在单元测试无法发现的逻辑/流错误类型? 6 年前 |
Beefster · 为什么ANSI颜色转义以“m”而不是“]”结尾? 6 年前 |
Guillermo Gutiérrez · STR转换是如何工作的? 7 年前 |
RudziankoÅ · 合并排序数组算法 7 年前 |
user8852560 · 构造函数中的验证和构造函数冲突 7 年前 |
jav974 · 订购产品时寻找最佳价格组合的算法 7 年前 |
hippietrail · 确定浮点数中前导零的数量 7 年前 |