Could Python supplant Java?
Duncan Booth
duncan at NOSPAMrcp.co.uk
Wed Aug 21 05:43:01 EDT 2002
Peter Hansen <peter at engcorp.com> wrote in
news:3D62CCFE.BF1237D9 at engcorp.com:
> TDD and Python are an *excellent* fit, since TDD benefits greatly from
> Python's very dynamic nature and flexilibity, while TDD supports
> Python almost perfectly in one area where it seems many feel it has
> a weakness - compile-time error checking.
I read something by Kent Beck that highlights one of the problems you
get from compile-time error checking when doing TDD in Java:
(from a draft of 'Test-Driven Development By Example')
"""As a result of using Self Shunt, you will see tests in Java
implementing all sorts of bizarre interfaces. In optimistically typed
languages, the test case class need only implement those operations that
are actually used in the running of the test. In Java, however, you have
to implement all the operations of the interface, even if most of the
implementations are empty, so you would like interfaces to be as narrow
as possible. The implementations should either return a reasonable value
or throw an exception, depending on whether you want to be notified if
an unexpected operation is invoked."""
To summarise for the benefit of anyone suffering from buzz-word-overload,
when you write a test for an object that uses another object, e.g. reads
from a file, you may make the testcase class implement something that
dummies out the 'file' interface and passes itself to the object under
test. With Python, if all that happens is that the object under test reads
the file, you just implement a dummy 'read' method. In Java you might also
need to implement close and isOpen methods even though they are never
called. If the Java interfaces aren't sufficiently narrow you might find
you have to implement a very large number of spurious methods in each test.
-- Duncan Booth
duncan at rcp.co.uk int month(char
*p){return(124864/((p[0]+p[1]-p[2]&0x1f)+1)%12)["\5\x8\3"
"\6\7\xb\1\x9\xa\2\0\4"];} // Who said my code was obscure?
More information about the Python-list
mailing list