Project Organization and Maintenance
Module Boundary
Package names and exported routines define the boundary other code should rely on.
Module Boundary
module_boundary.pl
use strict;
use warnings;
my $exports = ;
my @public = split /,/, $exports;
my $public_count = scalar @public;
my $has_debug = grep { $_ eq "debug" } @public;
my $boundary = $has_debug ? "too wide" : "focused";
print "exports=$exports\n";
print "public_count=$public_count\n";
print "has_debug=$has_debug\n";
print "boundary=$boundary\n";
use strict;
use warnings;
my $exports = ;
my @public = split /,/, $exports;
my $public_count = scalar @public;
my $has_debug = grep { $_ eq "debug" } @public;
my $boundary = $has_debug ? "too wide" : "focused";
print "exports=$exports\n";
print "public_count=$public_count\n";
print "has_debug=$has_debug\n";
print "boundary=$boundary\n";
use strict;
use warnings;
my $exports = ;
my @public = split /,/, $exports;
my $public_count = scalar @public;
my $has_debug = grep { $_ eq "debug" } @public;
my $boundary = $has_debug ? "too wide" : "focused";
print "exports=$exports\n";
print "public_count=$public_count\n";
print "has_debug=$has_debug\n";
print "boundary=$boundary\n";
module-boundary
Small public boundaries keep modules easier to test and change.