Re^2: The joys of bad code
by pg (Canon) on Oct 26, 2004 at 05:54 UTC
|
"Don't laugh now, wait until you see it in real life. "
;-) no need to wait, I did see below code in my real life:
#increments counter by 1
$counter ++;
That's why I emntioned this in Re: Preferred method of documentation?. | [reply] [d/l] |
Re^2: The joys of bad code
by Merlin42 (Friar) on Oct 26, 2004 at 16:59 UTC
|
Its a little scarier when you see:
/**********************************
* *
* Add one to i *
* *
**********************************/
i = i - 1;
So is it the code or the comment that is wrong? | [reply] [d/l] |
|
So is it the code or the comment that is wrong?
When the comments don't match the code, I normally assume they're both wrong.
| [reply] |
Re^2: The joys of bad code
by Happy-the-monk (Canon) on Oct 26, 2004 at 09:31 UTC
|
i=i+1;
I certainly see this in Perl all the time:
$self->total( $self->total + 1 );
These habits just never die.
Cheers, Sören
| [reply] |
|
Happy-the-monk,
This isn't quite the same thing. Unless you make the total method lvaluable, neither
$self->total++;
# nor
$self->total = $self->total + 1;
will work. I think the point wasn't about incrementing a variable by one, but feeling the need to document it. I do see the point in documenting it (not in what the code does, but why it does it), but to each their own.
| [reply] [d/l] |
|
I do see the point in documenting it (not in what the code does, but why it does it)
So this is off topic: bad documentation does not bad code make.
Documenting what the code does isn't bad by itself, it just isn't needed at all if the people supposed to be reading the documentation can program already.
Imagine they can't, that kind of documentation might help them understand what's happening.
Cheers, Sören
| [reply] |
|
|
|
I certainly see this in Perl all the time:
$self->total( $self->total + 1 );
Before automatically writing this off as being bad code, consider:
- The class has--or appears to have--a public accessor and a public mutator for total.
- The mutator is free to do stuff other than setting total. For example, it might log that fact that total has changed, or it might notify other agents who have registered interest in that aspect of the the instance.
- Subclasses are free to add interesting behavior to mutations of total, even if those mutations are generated internal to the class.
By coding this as
$self->{total}++;
you lose these benefits. Sometimes these benefits aren't important, sometimes they're vital. That said, perhaps
$self->increment_total;
might have been better.
| [reply] [d/l] [select] |
Re^2: The joys of bad code
by MidLifeXis (Monsignor) on Oct 28, 2004 at 17:05 UTC
|
/* Assign 1 to x */
x=1;
/* Just to be sure */
x=1;
| [reply] [d/l] |
Re^2: The joys of bad code
by SpanishInquisition (Pilgrim) on Oct 26, 2004 at 13:49 UTC
|
The scary part is, some of them graduate.
| [reply] |