|
I've been rewriting a system that was originally written in VBScript. Yes, that's 5000+ lines of VBScript with no white space, and no comments. That alone has had me crying for weeks/months, but this pushed me over the edge:
At one point in the application we generate documents, to do so we pass a piece of XML to a third party utility that does a Word Merge (or whatever kids are calling it these days). Rather than pass each piece of data as a separate element they are doing some of the formatting in the VBScript.
Instead of passing
<person>
<name>John Smith
<dob>1/1/1970
They are passing:
<person>John Smith {they insert a vbtab} 1/1/1970
I can't change the document template, so for now I have to reproduce this horrible code in .Net. I'm going to spend a few hours in the shower tonight crying and trying to scrub off that dirty feeling...
|
|
|
|
|
Ouch!
I Hate having a dependency system that takes data in a certain way. You have to continue using the "bad" code!
|
|
|
|
|
Find out who wrote the VBScript and let him clean your house!
This statement is false.
|
|
|
|
|
Do you get paid for the job?
|
|
|
|
|
Is there any other kind of job?
|
|
|
|
|
Do you work for nothing?
It is assumed that the majority of us work for a living and get paid for doing the work. This codeing justly deserves to be written up in the horrors forum.
|
|
|
|
|
Private Sub aLabel_AfterLabelEdit(Cancel As Integer, NewString As String)
'+++ VB/Rig Begin Push +++
Const VBRIG_PROC_ID_STRING = "+aLabel_AfterLabelEdit"
Dim VBRigErr As Long, VBRigErrMsg As String
If VBRig.Trap_TrapsEnabled Then
On Error GoTo aLabel_AfterLabelEdit_VBRigErr
End If
Call VBRig_Error(VBRIG_PUSH_PROC_STACK, 0, "", VBRIG_MODULE_ID_STRING, VBRIG_PROC_ID_STRING)
'+++ VB/Rig End +++
Cancel = True
'+++ VB/Rig Begin Pop +++
Call VBRig_Error(VBRIG_POP_PROC_STACK, 0, "", VBRIG_MODULE_ID_STRING, VBRIG_PROC_ID_STRING)
Exit Sub
|
|
|
|
|
0. Find the person who write this code.
1. Work out were they live.
2. Break into the home.
3. LEave a severed head in his head.
Panic, Chaos, Destruction.
My work here is done.
|
|
|
|
|
It looks surprisingly similar to the code you posted two days ago under the heading "Where's Waldo".
|
|
|
|
|
Yes, only this one was even a bigger horror especially since it only has one line of code that does anything & it's not even something that could raise an error. It's positively lovely.
|
|
|
|
|
I've seen this error rig code before. Sage Software has a utility in their MAS500 SDK that you can run to add error handle to all functions and subs that generates code very similar to this. There is no way anyone is hand writing that much error handling for "Cancel = True".
|
|
|
|
|
Yeah, I think this was a plug in which added this mess to all new functions/subs. They've since stopped using it, but it's still as one fugly mug when you see it, especially in something like this. Were I given a free reign, I'd be all over the my delete button right now.
|
|
|
|
|
This is a horror indeed, but one thing puzzles me:
Wes Jones wrote:
On Error GoTo aLabel_AfterLabelEdit_VBRigErr
Does VB support "long jumps" or sth? I don't see a aLabel_AfterLabelEdit_VBRigErr anywhere...
Greetings - Jacek
|
|
|
|
|
not that I know of.. it just doesn't care if the goto label there apparently.
|
|
|
|
|
This code looks like it was generated by an automated tool for injecting error handling code.
|
|
|
|
|
yes, it was. isn't it beautiful?
|
|
|
|
|
|
Here's one I know we've all seen, but it always give me a chuckle:
if ((from i in dc.PRODUCTIONs
where i.ACTIVE == true
select i.WOID).Contains(getSysId(woid)) == false)
If you think this is bad, you should see how the actual software runs! Ever since I started working for this company, I've had to completely strip and rebuild all the code most of it only half works. I'll post more horrors as I find them. Happy coding!
-- Steven
|
|
|
|
|
|
I'm not too familiar with linq yet, what's wrong with this one?
Wout
|
|
|
|
|
Everything is between the if ( )
|
|
|
|
|
Uuuh...
So what's the bug?
Wout
|
|
|
|
|
It's not a bug, but the code is very difficult to understand, even for experienced programmers. The guy should have used variables to store intermediate results.
|
|
|
|
|
Aaaah, I thought it was my unfamiliarity with linq, geez!
Wout
|
|
|
|
|
I swear I'm not making this up:
Private Sub aControl_DblClick()
'+++ VB/Rig Begin Push +++
Const VBRIG_PROC_ID_STRING = "+aControl_DblClick"
Dim VBRigErr As Long, VBRigErrMsg As String
If VBRig.Trap_TrapsEnabled Then
On Error GoTo aControl_DblClick_VBRigErr
End If
Call VBRig_Error(VBRIG_PUSH_PROC_STACK, 0, "", VBRIG_MODULE_ID_STRING, VBRIG_PROC_ID_STRING)
'+++ VB/Rig End +++
If someIndicatorVariable < 1 Then
'+++ VB/Rig Begin Pop +++
Call VBRig_Error(VBRIG_POP_PROC_STACK, 0, "", VBRIG_MODULE_ID_STRING, VBRIG_PROC_ID_STRING)
'+++ VB/Rig End +++
Exit Sub
End If
Call LaunchAnEXE("EXENAME", "params")
Unload Me
'+++ VB/Rig Begin Pop +++
Call VBRig_Error(VBRIG_POP_PROC_STACK, 0, "", VBRIG_MODULE_ID_STRING, VBRIG_PROC_ID_STRING)
Exit Sub
'=========================
aControl_DblClick_VBRigErr:
'=========================
VBRigErr = Err
VBRigErrMsg = Error$
Call VBRig_Error(VBRIG_SHOWLOG_ERROR, VBRigErr, VBRigErrMsg, VBRIG_MODULE_ID_STRING, VBRIG_PROC_ID_STRING)
Call VBRig_Error(VBRIG_POP_PROC_STACK, 0, "", VBRIG_MODULE_ID_STRING, VBRIG_PROC_ID_STRING)
Exit Sub
'+++ VB/Rig End +++
End Sub
|
|
|
|