Help With Better Design

Sells, Fred fred at adventistcare.org
Mon Jun 25 18:47:17 CEST 2007


> IMHO ... untested
> 
> class LightBulb:
> 	def __init__(self, on=False): self.IsOn = on
> 
> 	def turnOn(self): self.switchIt(True)
> 	def turnOff(self):self.switchIt(False)
> 
> 	def switchIt(self, turnon):
> 		if self.isOn==turnon: print "The Switch is Already %s" %
(["ON", "OFF"][self.isOn])
> 		else: self.isOn = turnon #or alternatively =!self.isOn
> 
> 	def __repr__(self): return ["ON", "OFF"][self.IsOn]
> 
> 
> 
> > --- apollonius2 at gmail.com wrote:
> > > 
> > > ON  = "ON"
> > > OFF = "OFF"
> > > 
> > > class LightBulb:
> > >     def __init__(self, initial_state):
> > >         self.state = initial_state
> > > 
> > >     def TurnOn(self):
> > >         if self.state == OFF:
> > >             self.state = ON
> > >         else:
> > >             print "The Bulb Is Already ON!"
> > > 
> > >     def TurnOff(self):
> > >         if self.state == ON:
> > >             self.state = OFF
> > >         else:
> > >             print "The Bulb Is Aleady OFF!"
> > > 
> > 
> > I've written code that looks a lot like that, and it's
> > a perfectly acceptable pattern IMHO.  I don't bother
> > with the variables ON and OFF, though, as they add no
> > clarity to simply using 'ON' and 'OFF' for the states.
> > 
> > 
> > > [...]
> > > The test portion of the code is actually longer than
> > > the class
> > > itself :-) 
> > 
> > That's usually a good thing!  It means your code is
> > concise, and your tests are exhaustive.  (But that
> > doesn't mean you can't also refactor your tests.)
> > 
> > 
> > 
> >        
> > ______________________________________________________________
> > ______________________
> > Be a better Globetrotter. Get better travel answers from 
> > someone who knows. Yahoo! Answers - Check it out.
> > http://answers.yahoo.com/dir/?link=list&sid=396545469
> > -- 
> > http://mail.python.org/mailman/listinfo/python-list
> > 
> 



More information about the Python-list mailing list