Re: policy -- taking the code guidelines seriously


Subject: Re: policy -- taking the code guidelines seriously
rob.campbell@att.net
Date: Wed Aug 22 2001 - 08:18:16 CDT


"Håkan Waara" <hwaara@chello.se> wrote:

> > and using "m" (for member) or "f" (for field) for
member variables.
>
> and g for globals, p for pointers, h for handles. ;)

Warts like 'i' and 'f' in Hungarian notation and warts
like 'm' and 'g' serve diffent purposes. The former
indicate the type of the variable. This is more of an
issue in C than C++, with its stronger type checking,
but it doesn't go away completely. Unexpected behavior
can result if the wrong type is used in certain
expressions. Warts could alert you to the problem if
you know the possibility existed, but knowing it exists
is the harder and more important part. Also, it is a
maintenance problem keeping the name and type of an
object synchronized.

The latter minimize name space pollution. The chance of
a collision of nontrivial names is low, but it doesn't
hurt to take extra precaution. I prefer adding a '_'
suffix to member variables, so that I can use the same
name minus the suffix as a member function to get its
value. For example, the getter function for the private
member variable prompt_ would be prompt().

Warts like 'h' and 'p' are a different type. They are
part of the name of the object, just like a dialog box
that applies formatting changes might be
called "formatDlg". That said, I don't always use them
inside member functions. For example, if a member
function returns a constant pointer to a member object
for use in another member function, I'd probably assign
it to "member" and not "pMember". Maybe this lack of
consistency is worst of all.

I think that the "sz" wart, for a NULL terminated
string, is defensible. Ideally, the complexity of
dealing with character strings would be encapsulated in
a class, but there will always be a need to pass or
receive the simpler representation to and from
functions. And the "sz" wart is an instantly
recognizable flag indicating what is expected.

While we're on the subject of naming conventions, I hate
the practice of shortening a variable name by just one
or two characters. For example, "prompt"
becomes "prmpt". The keystrokes saved usually aren't
worth the loss of clarity.

Rob Campbell



This archive was generated by hypermail 2b25 : Wed Aug 22 2001 - 08:18:18 CDT