Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much

Re^2: Splitting program into modules

by eyepopslikeamosquito (Bishop)
on Nov 12, 2018 at 20:51 UTC ( #1225656=note: print w/replies, xml ) Need Help??

in reply to Re: Splitting program into modules
in thread Splitting program into modules

One program should be one file, unless the "parts" are truly going to be reused by other programs (which they usually are not)

I hope you're not recommending 14,000 lines of main program in a single file! On the contrary, I recommend keeping the main program file short, with most of the work done in (highly cohesive, loosely coupled) modules -- with documentation and a test suite around each module.

You can find many examples of this approach on the CPAN. For example, in Perl::Tidy and Perl::Critic, the perltidy and perlcritic main programs are not much more than one-liners, essentially just:

use Perl::Tidy; Perl::Tidy::perltidy();
use Perl::Critic::Command qw< run >; run();
with all the work being done in (well-documented) modules with test suites around each module.

Replies are listed 'Best First'.
Re^3: Splitting program into modules
by Anonymous Monk on Nov 13, 2018 at 05:13 UTC
    I hope you're not recommending 14,000 lines of main program in a single file!

    I prefer writing, and hacking on, single file programs. It's much easier than remembering which module contains what code that's performing some action from a distance. I like to keep as much code as possible in the main program file. That being said, I also use plenty of modules, impose sane order on the source to ease navigation, and document everything.

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (5)
As of 2020-10-29 05:57 GMT
Find Nodes?
    Voting Booth?
    My favourite web site is:

    Results (269 votes). Check out past polls.