两个函数还是布尔参数?

lib*_*orw 5 functional-programming

是否有一些规则何时使用两个函数或何时传递布尔参数.

谢谢

Bri*_*ian 7

自从我上次重新阅读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)

并且调用站点通常使用布尔常量调用,这是一种强烈的气味,您应该将其分解为多个函数.