Good Code, Bad Code
The refactored function (10 lines of code including the white space to be fair
)
Public Function CallFunc(strFunctionName As String) As Boolean
On Error GoTo vbwErrHandler
CallFunc = TLI.InvokeHook(Me, strFunctionName, INVOKE_FUNC)
Exit Function
vbwErrHandler:
CallFunc = False
End Function
The old function below the fold(600 lines of code).
Public Function CallFunc(strFunctionName As String) As Boolean
'
On Error GoTo vbwErrHandler
'
'Call PopulateCodeColls
'Debug.Print strFunctionName
Dim rn As Long
strFunctionName = UCase(strFunctionName)
rn = CLng(Right(strFunctionName, 4))
If rn >= 901 Then
GoTo RN901
ElseIf rn >= 191 Then
GoTo RN191
ElseIf rn >= 181 Then
GoTo RN181
ElseIf rn >= 171 Then
GoTo RN171
ElseIf rn >= 161 Then
GoTo RN161
ElseIf rn >= 151 Then
GoTo RN151
ElseIf rn >= 141 Then
GoTo RN141
ElseIf rn >= 131 Then
GoTo RN131
ElseIf rn >= 121 Then
GoTo RN121
ElseIf rn >= 111 Then
GoTo RN111
ElseIf rn >= 101 Then
GoTo RN101
ElseIf rn >= 91 Then
GoTo RN91
ElseIf rn >= 81 Then
GoTo RN81
ElseIf rn >= 71 Then
GoTo RN71
ElseIf rn >= 61 Then
GoTo RN61
ElseIf rn >= 51 Then
GoTo RN51
ElseIf rn >= 41 Then
GoTo RN41
ElseIf rn >= 31 Then
GoTo RN31
ElseIf rn >= 21 Then
GoTo RN21
ElseIf rn >= 11 Then
GoTo RN11
End If
Select Case strFunctionName
Case "RULE0001":
CallFunc = Rule0001()
Case "RULE0002":
CallFunc = Rule0002()
Case "RULE0003":
CallFunc = Rule0003()
Case "RULE0004":
CallFunc = Rule0004()
Case "RULE0005":
CallFunc = Rule0005()
Case "RULE0006":
CallFunc = Rule0006()
Case "RULE0007":
CallFunc = Rule0007()
Case "RULE0008":
CallFunc = Rule0008()
Case "RULE0009":
CallFunc = Rule0009()
Case "RULE0010":
CallFunc = Rule0010()
End Select
Exit Function
RN11:
Select Case strFunctionName
Case "RULE0011":
CallFunc = Rule0011()
Case "RULE0012":
CallFunc = Rule0012()
Case "RULE0013":
CallFunc = Rule0013()
Case "RULE0014":
CallFunc = Rule0014()
Case "RULE0015":
CallFunc = Rule0015()
Case "RULE0016":
CallFunc = Rule0016()
Case "RULE0017":
CallFunc = Rule0017()
Case "RULE0018":
CallFunc = Rule0018()
Case "RULE0019":
CallFunc = Rule0019()
Case "RULE0020":
CallFunc = Rule0020()
End Select
Exit Function
RN21:
Select Case strFunctionName
Case "RULE0021":
CallFunc = Rule0021()
Case "RULE0022":
CallFunc = Rule0022()
Case "RULE0023":
CallFunc = Rule0023()
Case "RULE0024":
CallFunc = Rule0024()
Case "RULE0025":
CallFunc = Rule0025()
Case "RULE0026":
CallFunc = Rule0026()
Case "RULE0027":
CallFunc = Rule0027()
Case "RULE0028":
CallFunc = Rule0028()
Case "RULE0029":
CallFunc = Rule0029()
Case "RULE0030":
CallFunc = Rule0030()
End Select
Exit Function
RN31:
Select Case strFunctionName
Case "RULE0031":
CallFunc = Rule0031()
Case "RULE0032":
CallFunc = Rule0032()
Case "RULE0033":
CallFunc = Rule0033()
Case "RULE0034":
CallFunc = Rule0034()
Case "RULE0035":
CallFunc = Rule0035()
Case "RULE0036":
CallFunc = Rule0036()
Case "RULE0037":
CallFunc = Rule0037()
Case "RULE0038":
CallFunc = Rule0038()
Case "RULE0039":
CallFunc = Rule0039()
Case "RULE0040":
CallFunc = Rule0040()
End Select
Exit Function
RN41:
Select Case strFunctionName
Case "RULE0041":
CallFunc = Rule0041()
Case "RULE0042":
CallFunc = Rule0042()
Case "RULE0043":
CallFunc = Rule0043()
Case "RULE0044":
CallFunc = Rule0044()
Case "RULE0045":
CallFunc = Rule0045()
Case "RULE0046":
CallFunc = Rule0046()
Case "RULE0047":
CallFunc = Rule0047()
Case "RULE0048":
CallFunc = Rule0048()
Case "RULE0049":
CallFunc = Rule0049()
Case "RULE0050":
CallFunc = Rule0050()
End Select
Exit Function
RN51:
Select Case strFunctionName
Case "RULE0051":
CallFunc = Rule0051()
Case "RULE0052":
CallFunc = Rule0052()
Case "RULE0053":
CallFunc = Rule0053()
Case "RULE0054":
CallFunc = Rule0054()
Case "RULE0055":
CallFunc = Rule0055()
Case "RULE0056":
CallFunc = Rule0056()
Case "RULE0057":
CallFunc = Rule0057()
Case "RULE0058":
CallFunc = Rule0058()
Case "RULE0059":
CallFunc = Rule0059()
Case "RULE0060":
CallFunc = Rule0060()
End Select
Exit Function
RN61:
Select Case strFunctionName
Case "RULE0061":
CallFunc = Rule0061()
Case "RULE0062":
CallFunc = Rule0062()
Case "RULE0063":
CallFunc = Rule0063()
Case "RULE0064":
CallFunc = Rule0064()
Case "RULE0065":
CallFunc = Rule0065()
Case "RULE0066":
CallFunc = Rule0066()
Case "RULE0067":
CallFunc = Rule0067()
Case "RULE0068":
CallFunc = Rule0068()
Case "RULE0069":
CallFunc = Rule0069()
Case "RULE0070":
CallFunc = Rule0070()
End Select
Exit Function
RN71:
Select Case strFunctionName
Case "RULE0071":
CallFunc = Rule0071()
Case "RULE0072":
CallFunc = Rule0072()
Case "RULE0073":
CallFunc = Rule0073()
Case "RULE0074":
CallFunc = Rule0074()
Case "RULE0075":
CallFunc = Rule0075()
Case "RULE0077":
CallFunc = Rule0077()
Case "RULE0078":
CallFunc = Rule0078()
Case "RULE0079":
CallFunc = Rule0079()
Case "RULE0080":
CallFunc = Rule0080()
End Select
Exit Function
RN81:
Select Case strFunctionName
Case "RULE0081":
CallFunc = Rule0081()
Case "RULE0082":
CallFunc = Rule0082()
Case "RULE0083":
CallFunc = Rule0083()
Case "RULE0084":
CallFunc = Rule0084()
Case "RULE0085":
CallFunc = Rule0085()
Case "RULE0086":
CallFunc = Rule0086()
Case "RULE0087":
CallFunc = Rule0087()
Case "RULE0088":
CallFunc = Rule0088()
Case "RULE0089":
CallFunc = Rule0089()
'Oct 31, Rule 90 Deleted due to Standard Edit Revision 2.0
'Case "RULE0090":
'CallFunc = Rule0090()
End Select
Exit Function
RN91:
Select Case strFunctionName
Case "RULE0091":
CallFunc = Rule0091()
Case "RULE0092":
CallFunc = Rule0092()
Case "RULE0093":
CallFunc = Rule0093()
Case "RULE0094":
CallFunc = Rule0094()
Case "RULE0095":
CallFunc = Rule0095()
Case "RULE0096":
CallFunc = Rule0096()
Case "RULE0097":
CallFunc = Rule0097()
Case "RULE0098":
CallFunc = Rule0098()
Case "RULE0099":
CallFunc = Rule0099()
Case "RULE0100":
CallFunc = Rule0100()
End Select
Exit Function
RN101:
Select Case strFunctionName
Case "RULE0101":
CallFunc = Rule0101()
Case "RULE0102":
CallFunc = Rule0102()
Case "RULE0103":
CallFunc = Rule0103()
Case "RULE0104":
CallFunc = Rule0104()
Case "RULE0105":
CallFunc = Rule0105()
Case "RULE0106":
CallFunc = Rule0106()
Case "RULE0107":
CallFunc = Rule0107()
Case "RULE0108":
CallFunc = Rule0108()
Case "RULE0109":
CallFunc = Rule0109()
Case "RULE0110":
CallFunc = Rule0110()
End Select
Exit Function
RN111:
Select Case strFunctionName
Case "RULE0111":
CallFunc = Rule0111()
Case "RULE0112":
CallFunc = Rule0112()
Case "RULE0113":
CallFunc = Rule0113()
Case "RULE0114":
CallFunc = Rule0114()
Case "RULE0115":
CallFunc = Rule0115()
Case "RULE0116":
CallFunc = Rule0116()
Case "RULE0117":
CallFunc = Rule0117()
Case "RULE0118":
CallFunc = Rule0118()
Case "RULE0119":
CallFunc = Rule0119()
Case "RULE0120":
CallFunc = Rule0120()
End Select
Exit Function
RN121:
Select Case strFunctionName
Case "RULE0121":
CallFunc = Rule0121()
Case "RULE0122":
CallFunc = Rule0122()
Case "RULE0123":
CallFunc = Rule0123()
Case "RULE0124":
CallFunc = Rule0124()
Case "RULE0125":
CallFunc = Rule0125()
Case "RULE0126":
CallFunc = Rule0126()
Case "RULE0127":
CallFunc = Rule0127()
Case "RULE0128":
CallFunc = Rule0128()
Case "RULE0129":
CallFunc = Rule0129()
Case "RULE0130":
CallFunc = Rule0130()
End Select
Exit Function
RN131:
Select Case strFunctionName
Case "RULE0131":
CallFunc = Rule0131()
Case "RULE0132":
CallFunc = Rule0132()
Case "RULE0133":
CallFunc = Rule0133()
Case "RULE0134":
CallFunc = Rule0134()
Case "RULE0135":
CallFunc = Rule0135()
Case "RULE0136":
CallFunc = Rule0136()
Case "RULE0137":
CallFunc = Rule0137()
Case "RULE0138":
CallFunc = Rule0138()
Case "RULE0139":
CallFunc = Rule0139()
Case "RULE0140":
CallFunc = Rule0140()
End Select
Exit Function
RN141:
Select Case strFunctionName
Case "RULE0141":
CallFunc = Rule0141()
Case "RULE0142":
CallFunc = Rule0142()
Case "RULE0143":
CallFunc = Rule0143()
Case "RULE0144":
CallFunc = Rule0144()
Case "RULE0145":
CallFunc = Rule0145()
Case "RULE0146":
CallFunc = Rule0146()
Case "RULE0147":
CallFunc = Rule0147()
Case "RULE0148":
CallFunc = Rule0148()
Case "RULE0149":
CallFunc = Rule0149()
Case "RULE0150":
CallFunc = Rule0150()
End Select
Exit Function
RN151:
Select Case strFunctionName
Case "RULE0151":
CallFunc = Rule0151()
Case "RULE0152":
CallFunc = Rule0152()
Case "RULE0153":
CallFunc = Rule0153()
Case "RULE0154":
CallFunc = Rule0154()
Case "RULE0155":
CallFunc = Rule0155()
Case "RULE0156":
CallFunc = Rule0156()
Case "RULE0157":
CallFunc = Rule0157()
Case "RULE0158":
CallFunc = Rule0158()
Case "RULE0159":
CallFunc = Rule0159()
Case "RULE0160":
CallFunc = Rule0160()
End Select
Exit Function
RN161:
Select Case strFunctionName
Case "RULE0161":
CallFunc = Rule0161()
Case "RULE0162":
CallFunc = Rule0162()
Case "RULE0163":
CallFunc = Rule0163()
Case "RULE0164":
CallFunc = Rule0164()
Case "RULE0165":
CallFunc = Rule0165()
Case "RULE0166":
CallFunc = Rule0166()
Case "RULE0167":
CallFunc = Rule0167()
Case "RULE0168":
CallFunc = Rule0168()
Case "RULE0169":
CallFunc = Rule0169()
Case "RULE0170":
CallFunc = Rule0170()
End Select
Exit Function
RN171:
Select Case strFunctionName
Case "RULE0171":
CallFunc = Rule0171()
Case "RULE0172":
CallFunc = Rule0172()
Case "RULE0173":
CallFunc = Rule0173()
Case "RULE0174":
CallFunc = Rule0174()
Case "RULE0180":
CallFunc = Rule0180()
End Select
Exit Function
RN181:
Select Case strFunctionName
Case "RULE0181":
CallFunc = Rule0181()
Case "RULE0182":
CallFunc = Rule0182()
Case "RULE0183":
CallFunc = Rule0183()
Case "RULE0184":
CallFunc = Rule0184()
Case "RULE0185":
CallFunc = Rule0185()
Case "RULE0186":
CallFunc = Rule0186()
End Select
Exit Function
RN191:
Select Case strFunctionName
Case "RULE0191":
CallFunc = Rule0191()
Case "RULE0192":
CallFunc = Rule0192()
Case "RULE0193":
CallFunc = Rule0193()
Case "RULE0194":
CallFunc = Rule0194()
End Select
Exit Function
RN901:
Select Case strFunctionName
Case "RULE0901":
CallFunc = Rule0901()
Case "RULE0902":
CallFunc = Rule0902()
Case "RULE0903":
CallFunc = Rule0903()
Case "RULE0904":
CallFunc = Rule0904()
Case "RULE0905":
CallFunc = Rule0905()
Case "RULE0906":
CallFunc = Rule0906()
Case Else
CallFunc = False
End Select
'
Exit Function
' ----- Error Handler ------
vbwErrHandler:
Const VBWPROCEDURE = "CallFunc"
Select Case vbwErrorHandler(Err.Number, Err.Description, VBWPROJECT, VBWMODULE, VBWPROCEDURE, Erl)
Case vbwEnd
'End 'For Exe Files
Case vbwRetry
Resume
Case vbwIgnoreLine
Resume Next
Case vbwDebug
Stop: Resume ' press now F8 two times to return to the failing instruction
End Select
'
End Function
June 17th, 2008 - 07:11
Thanks Gabe… my eyes are bleeding and they wont stop!
June 17th, 2008 - 07:15
this must be coded back in the days when anyone who took an html class and an asp programming class then calling themselves “Web Masters”
June 17th, 2008 - 20:53
A definite candidate for The Daily WTF!