自从我上次重新阅读Code Complete以来已经有一段时间了,但我依旧回忆起McConnell对此的看法,以及"析取一致性"这个词出现在我脑海中.简单地说,
void f(int x, int y, bool b)
Run Code Online (Sandbox Code Playgroud)
与
void f1(int x, int y)
void f2(int x, int y)
Run Code Online (Sandbox Code Playgroud)
往往是一个选择,这取决于如何相似或不同的f会下的行为true相比false,它可能是有意义的它分成两个功能,给他们不同的名称.通常第三种选择更好,即将bool值更改为双值枚举,其中枚举名称使区别清晰.
关键是要查看调用站点,并通过阅读代码查看其含义是否清晰.如果您想对每个布尔调用站点发表评论:
f(3, 4, true /* absoluteWidgetMode */ )
Run Code Online (Sandbox Code Playgroud)
并且调用站点通常使用布尔常量调用,这是一种强烈的气味,您应该将其分解为多个函数.
| 归档时间: |
|
| 查看次数: |
267 次 |
| 最近记录: |