Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation

Re: Style & subroutine organization

by idnopheq (Chaplain)
on Aug 29, 2001 at 18:38 UTC ( #108767=note: print w/replies, xml ) Need Help??

in reply to Style & subroutine organization

Unless I'm reading it wrong, options one and two are not equivallent. The first calls 1 then 2 then 3 independent of each other. The second calls 1 which calls 2 which calls 3, 1 dependent on 2 dependent on 3 ( which is missing ).

Part of why subs exist is to ease repetitive tasks w/i code. One applies appropriate style based on need. There will be some instances where option one is best, and others where option two rules.

If you can post a specific example, maybe we can provide a better answer to your somewhat vague question.

Apply yourself to new problems without preparation, develop confidence in your ability to to meet situations as they arrise.

Replies are listed 'Best First'.
Re: Re: Style & subroutine organization
by camelman (Sexton) on Aug 29, 2001 at 18:54 UTC
    Sorry about the vague question. All three of these functions would be independent in the sense that they do not pass each other data but I would like to execute them in a row. I meant the execution order in my two options to be equivalent. As silly as it seems, something like this:
    #!/usr/bin/perl -w use strict; func1(); func2(); func3(); sub func1{ print "I am the first subroutine\n"; return 0; } sub func2{ print "I am the second subroutine\n"; return 0; } sub func3{ print "I am the thrid subroutine\n"; return 0; }
      The way listed here is the canonical way of calling three completely-independent functions in a row. It is very readable and maintainable.

      Maintainable, just to go off on a slight rant, is where there are no hidden assumptions. If you were to do:

      sub foo1 { foo2(); } sub foo2 { foo3(); } sub foo3{ }
      I would assume that foo1() depends on the result of foo2() in some fashion. If it doesn't, then I am very confused. Your piece of hidden information here is that there is no dependence between the function, other than they all need to be executed at the beginning of your script.

      If you reduce the amount of information that someone needs to know that cannot be directly deduced from reading the logical structure of your code (you do indent logically, right?), that improves the maintainability of your code. Maintainable code should be your holy grail, above and beyond any other consideration (except for correctness). It should be more important than optimization (save for when business needs demand it).

      We are the carpenters and bricklayers of the Information Age.

      Vote paco for President!

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (4)
As of 2019-11-19 05:08 GMT
Find Nodes?
    Voting Booth?
    Strict and warnings: which comes first?

    Results (94 votes). Check out past polls.