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