On Sun, Nov 6, 2011 at 03:56, pron <ron.press...@gmail.com> wrote:

> Hi. I'm new to Clojure, and enjoy using it very much. It's been years since
> I learned Scheme back in college, and it's a pleasure going back to lisp.
> I do, however, have a question regarding real-world Clojure use in large
> teams. While I clearly understand the pros of common data
> access/manipulation, doesn't the lack of encapsulation prove problematic in
> large projects with many developers? E.g., one developer may add a keyword
> to a map for one purpose, and another, use the same keyword for a different
> purpose.

Is this in any way different to how the developer might use a slot on
a class, or a get/set method pair for different purposes?

> With classes, all data manipulation for a single type is located in
> one place, so such clashes can easily be prevented, let alone the fact that
> encapsulation helps delineate legal operations with the data.
> I realize there are always tradeoffs, and perhaps the pros outweigh the
> cons, but I would like to know how you deal with such problems, that
> invariably arise in large-team development.

>From my experience, if you have an architecture that encourages
developers to think in terms of discrete functional units, and to have
documented interfaces between the functional units, you wind up with a
system that works - regardless of the control the language expresses
over access to members.

On the other hand, if you have an architecture (or culture) that
encourages poking into the implementation details, or just getting
things done - the pragmatic solution - rather than doing things right,
you will wind up with problems no matter which approach you take.

In other words I question your "invariably", rather than any other
part of your statement.  These are not automatic problems, and they
are not all that, in my experience, related to the degree that your
language forces you to go through a single channel for all access to a
particular bit of data.

Do you have more concrete concerns here, or is it just the general
assumption that without data hiding and a "one object, one file" model
you can't have a working large scale system?

Daniel
-- 
♲ Made with 100 percent post-consumer electrons

-- 
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

Reply via email to