非数字路径测试

Posted

技术标签:

【中文标题】非数字路径测试【英文标题】:Path Testing If Isnumeric 【发布时间】:2019-03-02 17:26:22 【问题描述】:

这可能是一个愚蠢的问题,如果是这样,我很抱歉。

我正在尝试找出我在 VB 中编写的一些代码的确切路径数。我了解路径测试。大多。但是我在 IF 语句中遇到了退出子的 ELSE 条件。

我的程序只有 4 个 IF 语句,用于检查 4 个带有非数字的文本输入。如果它们是数字,则一切继续,计算完成,结果显示在标签中。世界上的一切都是正确的。但是,如果输入不是数字,则 IF 语句的 ELSE 部分会弹出一个有关问题的文本框并退出子程序以避免错误。这些 ELSE 语句是单独的路径,并具有退出子的预期结果吗?或者如果程序继续下去,它是否只是一条路径,无论是到另一个 IF 语句还是到结果的结束显示?

感谢您提供的任何澄清。

【问题讨论】:

不要解释你的代码是做什么的,而是在问题中包含你的代码。 抱歉,艾哈迈德。我会包含上述代码,但我不在我的主计算机旁,目前无法访问它。 如果你退出 sub,就是这样。 Exit Statement 文档解释得很清楚;) 这个我明白了,但这是要测试的路径吗?这就是我的困惑。 @BrisingrChetowa 如果代码退出子程序,则不会执行 If...Then...Else 语句中的其他任何内容,包括条件,如果这是您所要求的。跨度> 【参考方案1】:

右键单击解决方案资源管理器中的项目,然后选择分析,然后选择计算代码指标。将显示圈复形(计算代码做出的决定的数量)。

对于以下,圈复杂度为 5。(是的,Else 语句是单独的路径。)

Module Module1
    Sub Main()
        Dim text1 As String = "abc"
        Dim text2 As String = "1bc"
        Dim text3 As String = "12c"
        Dim text4 As String = "123"

        If Not IsNumeric(text1) Then
            Console.WriteLine("Error -- text1!")
            Exit Sub
        ElseIf Not IsNumeric(text2) Then
            Console.WriteLine("Error -- text2!")
            Exit Sub
        ElseIf Not IsNumeric(text3) Then
            Console.WriteLine("Error -- text3!")
            Exit Sub
        ElseIf Not IsNumeric(text4) Then
            Console.WriteLine("Error -- text4!")
            Exit Sub
        End If

        Console.WriteLine("Do happy path processing")
    End Sub
End Module

【讨论】:

我们进入 .Net 时代已经有一段时间了。是时候放弃旧的 VB6 .IsNumeric 并用 .TryParse 替换它了。使用要转换为的实际数字类型的 .TryParse 方法。它会告诉你转换是否成功,并给出转换后的值。 问题涉及圈复杂度,而不是解析数值。 为了向后兼容而保留它。新代码应使用 .net 方法。它们已经过优化。如果您使用 .net 方法,那么在 C# 中来回移动会容易得多。 使用 .IsNumberic 后,您仍然需要将字符串转换为数字数据类型。 TryParse 会为您做到这一点。

以上是关于非数字路径测试的主要内容,如果未能解决你的问题,请参考以下文章

leetcode刷题(126)——1289. 下降路径最小和 II

python的数字图像处理学习

第5次作业+049+尤帆贤

第5次作业 021 林明铁

实验三+018+李滨

实验三+036+吴心怡