note
adrianh
<blockquote><em>Start1 by typing as much as code as you know will work</em></blockquote>
<p>In my opinion an even better option is to start by writing a test for what you want to happen, then write the code to make that test pass. Repeat until code done.</p>
<p> [google://Test Driven Development] takes a little getting used to, but works <em>very</em> well in my experience. Advantages include:</p>
<ol>
<li>You get pretty much 100% test coverage for free.</li>
<li>You always know when you have got a piece of code working.</li>
<li>You always know if a new piece of code breaks something.</li>
</ol>
<blockquote><em> So code a "caller" that uses that interface. In perl modules I tend to code this as a "main' program within the same file. </em></blockquote>
<p>You can also do this sort of thing with [cpan://Test::More] and friends - and have the advantage of having something you can move to a test script later on. So instead of:</p>
<code>
package main;
use strict;
my $doit = doit->new();
my @data = 1..10;
print $doit->enumerate( \@data );
</code>
<p>do something like:</p>
<code>
package main;
use strict;
use Test::More 'no_plan';
isa_ok my $doit = doit->new(), 'doit';
my @data = 1..10;
is_deeply [$doit->enumerate( \@data )], [1..10], 'enumerate works';
</code>
<p>Then you don't have to think about whether what's being printed out is correct.</p>
290885
290885