gpt4 book ai didi

c# - 为了清楚起见,从函数返回枚举而不是 bool 值?

转载 作者:太空狗 更新时间:2023-10-29 20:18:42 25 4
gpt4 key购买 nike

这类似于:

.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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com