in reply to How do I organize a large module?
Without knowing the details of what you're doing, I strongly recommend that you learn about the benefits of modularity. Which does not mean labeling chunks of stuff "modules". But instead means dividing your program into pieces that do different things, then making the interfaces between those pieces be small and clear. Which means that you're then able to make large changes to individual pieces.our @ISA = qw(My::Module::This My::Module::That);
I say this because writing down all of the functions that do one thing in one place, then freely using them everywhere else exports a large interface. This is bad for modularity, and is why Exporter advises you not to do that. To see just one of the practical problems that result, pity the poor maintenance programmer who wants to see how a commonly used function is implemented. The programmer knows that that function can be called in a particular package, but if that package has tons of imported functions from elsewhere, then tracking down the original function can be a real PITA.
This same issue is why many good programmers think that inheritance is overused and it is better to use other techniques, like composition, instead.
|
|---|