作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我不应该通过测试他们的产品来测试一组变量为 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/
您好,我希望我的下一个输出(在本例中就是字母)在上一个输出之后输出 8 个空格。这适用于第一个字符,但之后的 printf 语句不起作用。它在第一个 printf 语句之后立即打印,我试图将其设置为
我想知道制作 std::list<>::splice 背后的基本原理是什么使引用被拼接到新容器中的子序列的迭代器无效。这对我来说有点不合逻辑,尤其是考虑到标准 std::container::swap
谁能告诉我为什么我应该使用 Azure Function 输出绑定(bind)(例如 SendGrid 或 Twilio)而不是仅仅在我的 C# 函数中显式使用适当的 SDK(例如 Sendgrid
我们在当前项目中使用 React 和 TypeScript,我遇到了以下行为。 import React, { Component } from 'react'; 我将上面的行替换为下面的行,因为它似
我是一名优秀的程序员,十分优秀!