No tool or technology beats the combination of:
a) component/responsibility blueprint
b) discipline in communicating, following and adapting it

encapsulation can be a nice safety net once you have the things above, but 
it would never be a solution to the problem. just a convenience.

coding and designing defensively because you are concerned about your 
teammates is big waste of time. if this is the reality (in the enterprise 
it's the norm) guess clojure is not the best tech for that organization.

On Friday, May 8, 2015 at 6:29:50 PM UTC+2, Brian Craft wrote:
>
> Talk on the list about encapsulation usually comes back to some variation 
> of "you don't need it when you have immutable data structures". But in the 
> long term I'm finding the problem of working w/o encapsulation is not the 
> danger of data being mutated under you. Rather, it's the danger of all the 
> module boundaries blurring over time, leading to the big ball of mud: a 
> very fragile code base where everything depends on everything else.
>
> E.g. if you model your application with a plain data structure which you 
> pass around to different modules, each concerned with a small part of that 
> data structure, the tendency over time is for every module to become 
> concerned with every part of that data structure.  Then you have no 
> separation, nothing is reusable, and the code is very fragile.
>
> How do you avoid this, practically? In OO it would be enforced with 
> encapsulation, so the next developer (which might be me, six months later) 
> trying to fix a bug, or add a feature, knows "Oh, I shouldn't peek in here: 
> this module isn't supposed to depend on that piece of data".
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to