[python-uk] hexagonal Django
jamesbroadhead at gmail.com
Wed Aug 13 12:32:15 CEST 2014
On 13 August 2014 08:17, Peter Inglesby <peter.inglesby at gmail.com> wrote:
> > I'm starting my week-long exercise on trying it out on a slice of our
> existing Django monster. I'll report back.
> Echoes of Captain Oates here?
> Anyway, reviving an old thread: Brandon Rhodes talks provides a
> straightforward and accessible summary of "The Clean Architecture" in a
> recent talk and it's the least wanky discussion of this kind that I've
> come across. His main point is that things with side effects (particularly
> calling external services) should be isolated in "procedural glue" code,
> while the processing of data -- the business logic -- should happen in pure
> functional code. This leads to a better focus on the structure of the data
> you're dealing with, which in turn leads to more comprehensible and
> maintainable code.
>  http://www.pyvideo.org/video/2840/the-clean-architecture-in-python
I'm always reminded of that Rimmer quote about Oates...
I've been doing this recently with Twisted -- separating out async code
that deals with deferred chains from synchronous logic handling the results
of the deferreds.
I'm finding that it's leading to clear, easily tested code -- simple
synchronous tests on real data for the business logic, and stubbed
success/failures to test the various code-paths in the deferred logic.
I came to this variously by tangling too much with mixes of deferred-flows
and business logic while trying to write simple tests and seeing this DAS
talk on Boundaries 
d = defer.succeed(foo)
d.addErrback(retry, make_request, foo)
^ code like this is easily tested by stubbing all the callbacks, with the
stubs either succeeding or raising synchronous exceptions.
content = json.parse(body.read())
if not 'username' in content:
^ again, really easy to test. No deep nested logic, no need to mock or
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the python-uk