note
tilly
I say that because now @times has to be interpreted in different ways at different points in your code. A flag for the problem is that now it cannot be given a good name.<p>
When you change units like that, in some parts of your code it might mean seconds, in some minutes. Or perhaps it was minutes and now it is hours. And you can't even clarify what the units are with a good name name because now the name changes at different points in your code.<p>
I only consider this kind of side effect acceptable when the variable, array, etc that is being modified was just assigned. Like this:
<code>
my @minutes = @seconds;
$_ /= 60 for @minutes;
</code>
Now it is OK because it is clear glancing at the code what @minutes is supposed to be. If it wasn't right for a few instructions, that is because you hadn't finished initializing it yet.<p>
The two fundamental principles that I would cite here, <i>Side-effects make code harder to understand.</i> and <i>Variables which can't be given simple descriptive names are not well thought-through.</i>
296742
303392