gpt4 book ai didi

c# - 有没有理由我不应该通过测试他们的产品来测试一组 0 的变量?

转载 作者:太空狗 更新时间:2023-10-29 23:58:08 27 4
gpt4 key购买 nike

我不应该通过测试他们的产品来测试一组变量为 0 的原因吗?

在我跨不同语言的编码中,我经常会测试一组变量来做某事,如果它们都由零组成。

例如(c#):

if( myString.Length * myInt * (myUrl.LastIndexOf(@"\")+1) == 0 )

代替:

if( myString.Length == 0 || myInt == 0 || myUrl.LastIndexOf(@"\") < 0)

有什么理由不应该以这种方式进行测试吗?

最佳答案

这里有几个原因。所有这些都很重要,没有特定的顺序。

  • 短路。在您的第一个示例中,即使不需要,也会对所有三件事进行评估。在某些情况下,这可能是一个真正的问题:短路很好,因为你可以做类似 if (myObj != null && myObj.Enabled) 的事情。不抛出异常
  • 正确性。是myString.Length * myInt * myUrl.LastIndexOf(@"\") == 0实际上在所有实际情况下都等同于 if( myString.Length > 0 && myInt != 0 && myUrl.LastIndexOf(@"\") <= 0) ?我不确定。我对此表示怀疑。我确定我可以通过一些努力来解决这个问题,但是为什么我首先必须这样做呢?这让我想到...
  • 清晰度。由于常规方法是使用单独的语句和 && ,以后阅读这段代码的任何人都将更难理解它在做什么。并且不要找借口说“我将是唯一一个阅读它的人”,因为在几个月或几年后,你可能会忘记你写它时的想法和惯例,并开始阅读它就像其他人一样。

关于c# - 有没有理由我不应该通过测试他们的产品来测试一组 0 的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20381778/

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