Thomas had an application which was timing out. The code which he sent us has nothing to do with why it was timing out, but it provides a nice illustration of why timeouts and other bugs are a common “feature” of the application.
The codebase contains 9000+ line classes, functions with hundreds of lines, and no concept of separation of function. So, when someone needed to look at an account number and decide if that account needs special handling, this is what they did:
For i As Integer = 0 To R - 1
If DataSet.Tables(0).Rows(i)("Code") = Code Then
If Not IsDBNull(DataSet.Tables(0).Rows(i)("Estimate")) Then
If DataSet.Tables(0).Rows(i)("Estimate") <> "E" Then
If Not (IsDBNull(DataSet.Tables(0).Rows(i)("Code2"))) Then
If Not (DataSet.Tables(0).Rows(i)("Code2").contains("XX")) Then 'does not perform the test on XX accounts
If Not (DataSet.Tables(0).Rows(i)("Code2").contains("YYY")) Then
If Not (DataSet.Tables(0).Rows(i)("Code2") = "ZZZZZZ") Then
If Not (DataSet.Tables(0).Rows(i)("Code2").contains("ZZZ")) Then
If (Not (DataSet.Tables(0).Rows(i)("Code2").Contains("CC"))) Or (Not (DataSet.Tables(0).Rows(i)("Code2").Contains("cc"))) Then
If Not (DataSet.Tables(0).Rows(i)("Code2") = "AAAAAA") Then
If Not (DataSet.Tables(0).Rows(i)("Code2").StartsWith("BB")) Then
If Not (DataSet.Tables(0).Rows(i)("Code2").Contains("BBBB")) Then
If Not (IsDBNull(DataSet.Tables(0).Rows(i)("Location"))) Then
Dim tempLocation As String = DataSet.Tables(0).Rows(i)("Location")
If Not (tempLocation.Contains("XX")) Then 'does not perform the test on XX accounts
If Not (tempLocation.Contains("YYY")) Then
If Not (tempLocation = "ZZZZZZ") Then
If Not (DataSet.Tables(0).Rows(i)("Location").contains("ZZZ")) Then
If tempLocation = "CCCCCC" Or tempLocation = "CCCCCC" Then
GoTo Skip
Else
If Not (DataSet.Tables(0).Rows(i)("Location") = "AAAAAA") Then
If Not (DataSet.Tables(0).Rows(i)("Location").StartsWith("BB")) Then
If Not (DataSet.Tables(0).Rows(i)("Location").Contains("BBBB")) Then
If DataSet.Tables(0).Rows(i)("Date") > LastMonth Then
LastMonth = DataSet.Tables(0).Rows(i)("Date")
If Not IsDBNull(DataSet.Tables(0).Rows(i)("Present")) Then
LastReading = DataSet.Tables(0).Rows(i)("Present")
Else
LastReading = 0
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
skip:
Next
I don’t know what this code does. I don’t really want to. It’s a stack of if statements so deep that it provides a habitat for monothalameans.
The real treat, though, is that hidden goto
, which sort circuits the loop. Thomas didn’t know that labels, in VB.Net, were scoped to functions, so you can re-use the same label, skip
as often as you like, and don’t worry, the developer who wrote this did. skip:
s all over the place.