[Pdx-pm] Too much validation

Joe Oppegaard joe at oppegaard.net
Thu Nov 20 00:39:05 CST 2003


I notice that sometimes in OO code that I write I'll do something like
this obviously contrived example:


package WordCharacters;

sub new {
    my ($class, $value) = @_;

    # Validation check here
    unless ($value =~ /^\w+$/) {
        die "Non-word character used in value: $value";

    my $self = {
       value => $value

    bless $self, ref($class) || $class;
    return $self;

package main;

print "> ";
chomp(my $input = <>);

unless ($input =~ /^\w+$/) {
    # More validation here
    die "Word characters only!\n";

my $wc = WordCharacters->new($input);


So as a general rule of thumb, when should data validation be done?
Catch it early or catch it when it actually matters? Or both? (Ugh,
duplicate code).

Seems to me that typically you should catch it when it actually matters,
so the calling code doesn't have to worry about what is and isn't
acceptable. On the other hand, I guess I just feel dirty passing through
data that I know could be invalid.

	-Joe Oppegaard

More information about the Pdx-pm-list mailing list