<?xml version="1.0" encoding="windows-1252"?>
<node id="290948" title="Re: My number 1 tip for developers." created="2003-09-12 03:21:22" updated="2005-07-04 09:39:03">
<type id="11">
note</type>
<author id="186362">
adrianh</author>
<data>
<field name="doctext">
&lt;blockquote&gt;&lt;em&gt;Start1 by typing as much as code as you know will work&lt;/em&gt;&lt;/blockquote&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt; [google://Test Driven Development] takes a little getting used to, but works &lt;em&gt;very&lt;/em&gt; well in my experience. Advantages include:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You get pretty much 100% test coverage for free.&lt;/li&gt;
&lt;li&gt;You always know when you have got a piece of code working.&lt;/li&gt;
&lt;li&gt;You always know if a new piece of code breaks something.&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;&lt;em&gt;  So code a "caller" that uses that interface. In perl modules I tend to code this as a "main' program within the same file.  &lt;/em&gt;&lt;/blockquote&gt;

&lt;p&gt;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:&lt;/p&gt;

&lt;code&gt;
 package main;
 use strict;
 
 my $doit = doit-&gt;new();
 my @data = 1..10;
 print $doit-&gt;enumerate( \@data );
&lt;/code&gt;

&lt;p&gt;do something like:&lt;/p&gt;

&lt;code&gt;
package main; 
use strict; 
use Test::More 'no_plan';

isa_ok my $doit = doit-&gt;new(), 'doit';
my @data = 1..10; 
is_deeply [$doit-&gt;enumerate( \@data )], [1..10], 'enumerate works';
&lt;/code&gt;

&lt;p&gt;Then you don't have to think about whether what's being printed out is correct.&lt;/p&gt;</field>
<field name="root_node">
290885</field>
<field name="parent_node">
290885</field>
</data>
</node>
