[Tutor] designing POOP

Kent Johnson kent37 at tds.net
Thu Feb 7 22:07:02 CET 2008


bhaaluu wrote:

> The TDD method is the method used in my tutorial:
> Python Programming for the Absolute Beginner 2E. Michael Dawson. 2006.
> Dawson uses a very simple Tamagotchi example called Critter Caretaker
> to introduce the mechanics of POOP. However, perhaps he is using
> the TDD method of "design"?

I don't think Dawson uses TDD. AFAIK he doesn't talk about unit-testing 
at all, which is the fundamental practice of TDD. For an example of unit 
tests in Python, see
http://docs.python.org/lib/minimal-example.html

> here is
> a first little testing snippet from the testing directory, using the TDD
> method. I'm confident that if I am using the terminology incorrectly,
> someone will point out the error of my ways. 

I think you are using the terminology incorrectly. I would call this an 
example of experimental programming, maybe. A classic example of TDD in 
Java is here:
http://junit.sourceforge.net/doc/testinfected/testing.htm

> class TestClass1(object):
>     """ please give me a better name"""
>     def __init__(self):
>         """please document me"""
>         self.name = ""
>         self.answer = ""
>         self.strength = 20
>         self.wealth = 45
>         self.light = 0
>         self.tally = 0

This is a good example of a data class - a class that is just a 
container for data. That is a code smell. It seems to contain unrelated 
values - name and strength are attributes of the player, light is an 
attribute of the environment. So it should probably be more than one 
class, or, since the entire program is in one loop, these could just be 
local variables of main().

> def main():
>     tc1 = TestClass1() # instance
>     tc1.__init__() # invoke method

The __init__() method is called implicitly by calling TestClass1(). 
Generally the only time you explicitly call __init__() is when calling 
the method of a base class.

Kent


More information about the Tutor mailing list