Josh was a just-out-of-college guy who seemed to have a self-proclaimed expertise in
everything... His degree in Graphic Arts made him the resident know-it-all on every
subject, especially object oriented design (???). This was really amusing when he
declared his VB6 code to be the epitomy of OO standards.
Then we looked at some of the code. Here are 2 nice examples of declarations that
backfired on Josh, but it a fortunate way. Every method he used in these objects
was able to be used implicitly as static (not explicitly declared!). Josh got very
lucky that his code just happened to work for him and that he never had to reference
multiple instances of LoginPattern or ProfileTree.
<code>
Private LoginPattern As New LoginPattern
Private ProfileTree As New ProfileTree
</code>
If naming a variable the same as its declared type wasn't bad enough, he had an
interesting grasp on naming convention in his forms as well. Following typical
convention, he named forms with a "frm" prefix (eg. frmError). Each form usually
had at least one frame on it. In just one of many cases, 'frmError' was a frame on the
form 'frmError'. Wow…
We were all astonished and impressed that VB6 could handle his ambiguous ideas. It
seems that VB6 either caters well to goofball programmers, or it is more robust than
people give it credit for (the jury is still out on that one…).
Side note:
Some of the other highlights Josh became famous for were his monstrous method signatures.
Coupling was never a consideration when he decided to pass a form AND its buttons (as
variants - ?) AND its frames AND its textboxes AND its labels, and a db connection info between methods:
<code>
Public Sub loadSelectedCase(fOracle As FooOracle,
userRoles As Dictionary,
ByVal caseId As String,
frmCase As Form,
entityTree As treeView,
lstStatus As ListBox,
frmSynopsis As Frame,
frmFields As Frame,
lblSynopsis As Label,
txtSynopsis As TextBox,
cmdSynopsis As Variant)
</code>
...and then there's the mystery db recordset check:
<code>
Public Function validateRecset(recset As OraDynaset) As Boolean
If recset Is Nothing Then
validateRecset = False
ElseIf recset.RecordCount <= 0 Then
validateRecset = False
End If
validateRecset = True
End Function
</code>
Even though he invalidates his validation by claiming every recordset is valid, I'm glad he's thorough enough to check for those times when the RecordCount would be less than zero.