我有以下内容,想知道初始测试是否过度:
static void Main(string[] args) {
if (args.Length == 0 || args == null) {
//do X
}
else {
//do Y
}
}
换句话说,我要问的是 args.Length 是否有可能为零,或者 args 是否为空......或者这些条件中的一个就足够了吗?
最佳答案
嗯,Main
被定义为永远不会使用 null
参数调用。如果它确实以某种方式接收到一个 null 参数,那么您的环境就会被破坏,无论您做什么,所有的赌注都会被取消,所以检查 null
真的没有任何好处>.
另一方面,如果您确实检查空值,那么代码的读者和维护者将不得不理解原因。为什么原来的程序员要投入这么无用的支票呢?他知道我们不知道的事情吗?我们不能就这样删除它,因为他可能已经发现了一些奇怪的角落案例错误!
换句话说,您正在为您的程序增加复杂性,并使代码的 future 读者感到困惑。不要那样做。那个 future 的用户可能就是你。让 future 的自己快乐,并编写有意义的代码。
但是,在这种空检查确实有意义的情况下,它必须是最左边的条件。
在这样的测试中:args.Length == 0 || args == null
,args.Length
被评估首先,如果失败,args
与null 进行比较
。换句话说,如果 args
为 null,您的代码将抛出异常。它应该是 args == null || args.Length == 0
关于c# - 这是评估 Main(string[] args) 的矫枉过正吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9766926/