- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
这类似于:
.NET: bool vs enum as a method parameter
但涉及在某些情况下从函数返回 bool 值。
例如返回 bool 的函数:
public bool Poll()
{
bool isFinished = false;
// do something, then determine if finished or not.
return isFinished;
}
这样使用:
while (!Poll())
{
// do stuff during wait.
}
从调用上下文来看,从 Poll() 返回的 bool 的含义并不明显。如果将“Poll”函数重命名为“IsFinished()”,在某些方面可能会更清楚,但该方法会做一些工作,并且(IMO)不会真正反射(reflect)该函数的实际作用。像“IsFinished”这样的名称似乎也更适合属性。另一种选择可能是将其重命名为类似“PollAndReturnIsFinished”的名称,但这也感觉不对。
所以一个选项可能是返回一个枚举。例如:
public enum Status
{
Running,
Finished
}
public Status Poll()
{
Status status = Status.Running;
// do something, then determine if finished or not.
return status;
}
这样调用:
while (Poll() == Status.Running)
{
// do stuff during wait.
}
但这感觉有点矫枉过正。有什么想法吗?
最佳答案
一个方法应该像一个动词一样被阅读,而bool Poll()
方法的结果具有误导性,这可能就是它使用起来很尴尬的原因。
// you wrote.
while( !Poll() )
{
// still waiting .. do something.
}
当我第一次阅读您的代码时,我以为它说的是While (the system is) not polling, do something?
但它真的说......投票,如果没有完成投票,在我们等待的时候做点什么。
您的枚举版本似乎改变了调用的语义,但变得更好,这就是人们喜欢它的原因。 当 Poll() 仍在运行时,在我们等待时做一些事情。
可读性最高的代码获胜。
关于c# - 为了清楚起见,从函数返回枚举而不是 bool 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3011635/
MVC3 中的助手是否在 Controller 和 View 中使用? 助手是放置常用 Controller 方法的正确位置吗? 我想创建一个通用方法来获取数据库中的所有子子 ID,并确保它位于正确的
有人可以阐明这两者之间的区别吗,因为它们存在于执行上下文中?我很难阅读 ECMA 262 v 5规范并清楚地看到差异。 谢谢你, 最佳答案 两者都是执行上下文的组件(相同类型),但它们有不同的用途(f
我是一名优秀的程序员,十分优秀!