- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想知道在这些情况下更好的解决方案是什么,或者公司的编码标准对此有何看法?
if (this.State == NetworkState.Server)
{
//...
}
else if (this.State == NetworkState.Client)
{
//...
}
else
{
//some error throwing or printing
}
或
if (this.State == NetworkState.Server)
{
//...
}
else
{
//sure its client here
}
我觉得第一个更具可读性,因为你可以清楚地看到 client 是另一个状态,但它也使代码更长,有时我真的不能做比打印更多的东西“这应该永远不会发生"在第三种情况下。是否有更好的解决方案?
最佳答案
在这里使用 switch 语句更有意义。
switch(this.State)
{
case NetworkState.Server:
//...
break;
case NetworkState.Client:
//...
break;
default:
//some error throwing or printing
throw new NotSupportedException(string.Format("An unsupported enumeration value {0}.{1} was used. Processing for the case is not supported because it has not been explicitly implemented.", typeof(NetworkState).Name, this.State), new NotImplementedException());
}
它明确表明您正在考虑的唯一条件是枚举值。对于 if 语句,您必须阅读每个额外的“if”以确保没有其他条件影响逻辑。
编辑:我刚刚注意到您问题中询问如何处理不匹配情况的部分。我在那里添加了一个异常(exception)来解释这个问题。我喜欢这样做,因为在现实中——我唯一会遇到 default
子句的情况是: (1) 我忘记了一个选项,需要实现它;或者,(2) 自编写原始代码以来,已将一个值添加到枚举中。在任何一种情况下,都需要开发人员的关注,而不是处理,因此抛出一个错误来指示这种必要性似乎是唯一合理的回应。
关于c# - 这是双向 if-else 语句的最佳/标准做法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16367433/
如果您想分享更多信息,可以在这里找到整个资源 指针: https://github.com/sergiotapia/DreamInCode.Net 基本上,我的API将为其他开发人员提供
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 5 年前。 Improve this qu
我不是 SCM 工具的经验丰富的用户,尽管我确信它们的用处,当然。 我在以前的工作中使用了一些不起眼的商业工具,在当前的工作中使用了 Perforce,并在我的小型个人项目中使用了 TortoiseS
所以我想知道一些我应该避免在 javascript 中做的事情以获得良好的 SEO 排名。在我的下一个站点中,我将广泛使用 jquery 和 javascript,但不想牺牲 SEO。那么您认为我应该
基本上,我想知道什么是避免 future CSS 代码出现问题和混淆的最佳方法... 像这样命名 CSS 属性: div#content ul#navigation div.float-left (真
我是一名优秀的程序员,十分优秀!