Jeff C. was hired as an exterminator. The "big rewrite" had a lot of "big bugs" that needed to be eliminated, which was somewhat ironic, as the big rewrite was commissioned to eliminate a lot of "little bugs" that found their way into the original system over the years.
A product of neglect and abuse, the original system had become a crazy nightmare of Classic ASP pages. Nothing fully worked, but things half-worked half the time. The big rewrite yielded exactly the same thing, but in VB.NET. There have been talks about rewriting the rewrite, but in the mean time, Jeff's day-to-day involves toiling in code like this:
Private Function Doubleize(ByVal StrVal As String) As Double Dim i, j, k As Integer Dim trimmedStr As String Dim isDecimal As Boolean = True k = 0 trimmedStr = LTrim(RTrim(StrVal)) For i = 1 To Len(trimmedStr) j = Asc(Mid(trimmedStr, i, 1)) If Not (j = 46 OrElse (i = 1 AndAlso (j = 43 OrElse j = 45)) _ OrElse (j >= 48 AndAlso j <= 57)) Then isDecimal = False k = i Exit For End If Next i If isDecimal AndAlso Len(trimmedStr) > 0 Then Return Math.Round(CDbl(trimmedStr), 4) ElseIf k > 1 Then Return Math.Round(CDbl(Mid(trimmedStr, 1, k - 1)), 4) Else Return 0 End If End Function
"In case it's not obvious," Jeff writes, "the function turns strings into numbers (usually zero). There are at least four different-but-mostly-similar instances of this function throughout the project and, in the entire codebase, this function was used around fifty times. In virtually every usage, it was called multiple times like this."
ReasonStr = ReasonStr & _ "Changed Unit Weight (" & _ CStr(Doubleize(CStr(Doubleize(UnitWeightTextBox.Text) - InvItem_UnitWeight))) & _ ")