假设您有以下代码块:
if (Light.On) {
// do something...
} else if (Light.Off) {
// do something else...
} else {
// this state should never be reached
}
现在假设应用程序逻辑规定在这部分代码中,永远不应达到最后一个状态,但这不是在编译时可以确定的。也许还有其他状态(例如Light.Broken
)可以由应用程序的其他部分设置,但这里没有使用。
else
你在最后一个块中添加了什么代码?
- 不添加代码,因为无论如何都不应该达到它。
- 添加一些日志记录功能,以便作为开发人员的您知道已达到某些非法状态。
- 抛出异常,因为不能达到状态,如果无论如何都达到了,那么肯定有其他问题。
第一个选项对我来说似乎不合理,希望事情顺利似乎不是正确的选择。选项二的优点是您的应用程序不会立即崩溃,因此如果这种情况发生在测试中未发现的极少数情况下,客户可以继续使用该应用程序,并且会通知开发人员该问题。选项三导致应用程序崩溃,这显然不是您希望您的客户体验到的,但它确实很清楚地表明出了问题。
处理这种情况的最佳方法是什么?
编辑,根据评论:
引导讨论的一些额外考虑因素:
- 包含上述代码的方法的合约不允许在那时设置任何其他值,然后是 On 和 Off。
- 假设代码位于应用程序的不那么关键的部分。