Re: Symbol Name Length (Was: STL Memory leak?)
Daniel Pitts wrote:
blargg wrote:
By the way, your naming convention is very verbose, and thus obscures
things. The scope of a variable should play a part in the length of its
name; smaller scope, shorter name. But this is just a style issue.
Not to start a flame war, but I disagree. Names should *always* reflect
the semantics of what they represent as concisely as possible. Take
away all you can, but no more.
For example:
if (useNode) {
Node n; // n is to short, even for this short scope.
n.doStuff();
}
Yes, you can see n and very quickly look up to see it is a Node, but you
save a couple of brain-cycles if you use the following.
if (useNode) {
Node node;
node.doStuff();
}
It doesn't obscure anything. Of course, these things are always value
judgments, and there is often reason to stray.
For example, I've seen the following two functions, which one is easier
to understand:
char *strcpy(char*a, char*b)
... char const* b)
{
char *c = a;
while ((*b = *a) != 0)
{
++b;
++a;
}
return c;
}
char *strcpy(char *source, char *dest)
{
char *ret = source;
while ((*dest = *source) != 0)
{
++dest;
++source;
}
return ret;
}
Exact same function, different names, the second one is way easier to
understand IMO.
So, if I understand you correctly, the form of 'strcpy' like this
char *strcpy(char* a, char const* b)
{
char *c = a;
while (*a++ = *b++)
;
return c;
}
is no good, right? And mostly because of the single-letter names, correct?
I think I get your point. However, functions like those are often
write-only. Nobody cares about the body of 'strcpy'. It works, and
that's about all we need to know. While it's being debugged, there is
no need to name the arguments in a particular way, since the programmer
knows what the meaning of the arguments/variables is. Once debugged, it
should be put in the vault, documented, and never looked at again.
V
--
Please remove capital 'A's when replying by e-mail
I do not respond to top-posted replies, please don't ask