object.enable() anti-pattern
Steven D'Aprano
steve+comp.lang.python at pearwood.info
Thu May 9 07:51:22 EDT 2013
On Thu, 09 May 2013 06:08:25 -0500, Wayne Werner wrote:
> Ah, that's it - the problem is that it introduces /Temporal Coupling/ to
> one's code: http://blog.ploeh.dk/2011/05/24/DesignSmellTemporalCoupling/
Good catch!
That's not the blog post I read, but that's the same concept. "Temporal
Coupling" -- yes, that is an excellent description of the problem.
> You don't ever want a class that has functions that need to be called in
> a certain order to *not* crash. That's fine if you have to call them in
> a certain sequence in order to get the correct data - that's what
> programming is all about, after all. But if you provide me a class with
> a constructor you better make sure that when I do this:
>
> thing = YourSuperAwesomeClass()
> thing.do_stuff()
>
> that I don't get some horrid stack trace ending with
>
> InvalidStateError: initialize() needs to be called before
> do_stuff()
>
> Or something worse.
Exactly.
Thank you Wayne, that's a great help.
--
Steven
More information about the Python-list
mailing list