in reply to TDD of non-module code
Put (almost) everything in modules. This makes testing easy, but requires more exposure of subs than I want
I don't understand that point at all; maybe your definition of "exposure" is different than mine.
In Perl, every named subroutine can in principle be called from the outside, independently if it is defined in a script file or a module. (a script can do another script, and then access that second script's subs)
By convention, subs starting with an underscore are consider "private", so if you want to reduce exposure of a sub inside a module, simply mark it with an underscore.
as well as more linkages between modules
I don't see that as a problem either. You can write
# script.pl # do stuff 1 here
Or you can write
# script.pl use Module::That::Does::What::I::Want qw/doit/; doit(@ARGV); # file Module/That/does/What/I/Want.pm package Module::That::Does::What::I::Want; sub doit { # do stuff 1 here }
And have just one more level of indirection, but an easier time to test all the other subroutines from the module without running doit.
Of course that approach isn't very different from writing all the code in the script, no code in the mainline, and at the end of the script putting a
doit(@ARGV) unless caller;
That way you can also load the script as do 'yourscript.pl' without executing sub doit.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: TDD of non-module code
by davies (Monsignor) on Jan 24, 2012 at 14:51 UTC |