Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re: Re: Re: Re: Re: Re: Think for yourself.

by BrowserUk (Patriarch)
on Oct 30, 2003 at 20:15 UTC ( [id://303392]=note: print w/replies, xml ) Need Help??


in reply to Re: Re: Re: Re: Re: Think for yourself.
in thread is the use of map in a void context deprecated ?

I'm not going to argue with a style judgement, style being a very personal thing, but why do you say that

$_ /= 60 for @times;

constitutes bad style?


Examine what is said, not who speaks.
"Efficiency is intelligent laziness." -David Dunham
"Think for yourself!" - Abigail
Hooray!

Replies are listed 'Best First'.
Re: Re: Re: Re: Re: Re: Re: Think for yourself.
by tilly (Archbishop) on Oct 30, 2003 at 22:01 UTC
    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.

    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.

    I only consider this kind of side effect acceptable when the variable, array, etc that is being modified was just assigned. Like this:

    my @minutes = @seconds; $_ /= 60 for @minutes;
    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.

    The two fundamental principles that I would cite here, Side-effects make code harder to understand. and Variables which can't be given simple descriptive names are not well thought-through.

      So, if the logic of the program allows you to avoid naming the seconds prior to the convertion, you would find that acceptable?

      my @minutes = map{ $_/60 } source_of_seconds();

      Examine what is said, not who speaks.
      "Efficiency is intelligent laziness." -David Dunham
      "Think for yourself!" - Abigail
      Hooray!

        Not only acceptable, but preferable.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://303392]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others goofing around in the Monastery: (3)
As of 2024-03-19 05:02 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found