[AccessD] To a man with a hammer

John Colby jwcolby at gmail.com
Thu Feb 16 07:22:03 CST 2023


In my opinion, the user interface is an absolutely critical part of any
app.  Too often the programmer treats the UI as an afterthought, which ends
up causing the entire application to be a disjointed mess.  I have designed
dozens of applications for dozens of companies over the 25 years I have
worked in Access and over that time I figured out UI things which should
just always be the same, everywhere, in every form.

Notice that in Windows, every single application has a set of three
controls in the upper right corner, a 'close', 'restore down', and a
'minimize' button.  Always there.  Not sometimes there and sometimes
somewhere else, and sometimes not present.  In fact if we as developers
want that to not appear in our forms we have to jump through hoops to make
it not appear.

So whenever I see a developer describing shoving UI kinds of things into a
form class, my mind cringes.  As soon as I place anything into a form class
that has any chance of being used twice I have started a UI disjointed
mess.  I have taken over other developer's projects, and understanding all
the crap in the typical form class is one of the major undertakings.

As for a class being a hammer... in my view even saying such a thing speaks
volumes about the person saying it.  They either don't understand classes
or they have no imagination.  And yes, I get tired of being told I have no
imagination when in fact it is the person saying such things which has no
imagination.

I have a class which wraps every single data aware UI object in Access,
think textbox, combo, radio button etc.  I have a pair of classes which
collect errors as they occur.  I have a class which logs anything.  The
error handler class uses the log class to log errors collected.  I have an
FTP class, not as useful as it once was.  A class to do MD5 hashes.  A pair
of classes to parse and deal with OpenArgs for when a form opens.  A pair
of classes which read Sysvars out of my SysVar table and caches them into
memory so the app doesn't have to hit a table every time.  A timer class of
course.  A zip class, with a matching unzip class.  And many more classes
as well.  All, BTW, placed out in a framework library which can be
referenced from any app I desire.

What about those many varied purposes describes using a hammer to you?
Well maybe, if you have no imagination I suppose.
-- 
John W. Colby
Colby Consulting


More information about the AccessD mailing list