On Apr 8, 2013, at 11:10 AM, Arnaud Delobelle wrote:

> On 8 April 2013 14:21, Roy Smith <r...@panix.com> wrote:
> 
>> For a while, I was rabidly(*) into TDD (Test Driven Development).  The
>> cycle I was using was, "Write a specification of a behavior, write a
>> (failing) test for that behavior, then write the least possible amount
>> of code to make the test pass.  Lather, Rinse, Repeat, Ship"
>> 
>> The "least possible" part is important.  It makes sure the cycles stay
>> short (ideally, just a few minutes), and that you don't write any code
>> for which you don't have tests.
> 
> The least amount of code is often also not the best in terms of time
> or space complexity.  Does this mean you have to write tests for time
> and space complexity as well?  That's interesting, but I don't know of
> tools to help do that (time complexity seems easy enough, but space
> complexity seems tougher to me).


If space and time complexity are important, then you need to write a test for 
those things.  If you have no test for them, then it's not important and you 
shouldn't worry about it.  At least according to the TDD catechism :-)

>From a somewhat less radical point of view, the first thing you want to do is 
>get the code to produce correct results.  Once you've got that (and a fully 
>comprehensive test suite to prove it), then you can move on to making it more 
>efficient, and your test suite serves as protection against behavior 
>regressions.

And, yes, I agree that testing for time and space complexity are not trivial, 
because making accurate, repeatable, and isolated measurements of those things 
is often surprisingly complicated.  I can't help point out, however, that if 
your initial implementation is to have your code return a constant, it's pretty 
likely to be an optimum solution in both time and space :-)

---
Roy Smith
r...@panix.com

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to