非数字路径测试
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 会为您做到这一点。以上是关于非数字路径测试的主要内容,如果未能解决你的问题,请参考以下文章