假设您有以下代码块:
if (Light.On) {
// do something...
} else if (Light.Off) {
// do something else...
} else {
// this state should never be reached
}
Run Code Online (Sandbox Code Playgroud)
现在假设应用程序逻辑规定在代码的这一部分中,永远不应该达到最后一个状态,但它不能在编译时确定.也许还有其他状态(例如Light.Broken)可以由应用程序的其他部分设置,但这里没有使用.
你在最后一个else街区添加了什么代码?
第一种选择对我来说似乎不合理,希望事情正确看起来不是正确的选择.选项二的优势在于您的应用程序不会立即崩溃,因此如果在极少数情况下发生这种情况而未在测试中发现,则客户可以继续使用该应用程序,并通知开发人员该问题.选项三导致应用程序崩溃,这显然不是您希望客户体验的东西,但它确实表明出现问题.
处理这种情况的最佳方法是什么?
编辑,根据评论:
引导讨论的一些额外考虑因素: