Hi, 2009/7/25 jan <jan.mare...@gmail.com>
> > Laurent PETIT <laurent.pe...@gmail.com> writes: > > > 2009/7/24 pcda...@gmail.com <pcda...@gmail.com> > > > > On Jul 23, 10:15 pm, Richard Newman <holyg...@gmail.com> wrote: > > > > Coming from an OO background which puts a strong focus on data > > > > encapsulation, > > > > this makes me a little nervous. > > > > > > The same problem exists with OO. > > > > Not to the same extent, unless you expose all the internals of your > > classes (including fields) as public. > > > > > > Java tries hard to hide the detail, yes, but it's still possible to use > > reflection. > > So it's just (as you stated) a fact of making it easy or difficult. > > > > But you should consider that everything you cannot find in the (doc) of > > functions is not public API. > > While I agree with what you say, I have a couple of problems with > relying on doc strings to document private fields. Firstly, I don't > write docs while prototyping. Secondly, docs aren't visible when > browsing code. It's not just about map keys one should -or should not- considere as public API. It's, more generally, about the detail of the structures passed to functions or returned from functions. Trying to do some introspection into the structure (even as simple as a hash-map) seems to me already like the first step of breaking encapsulation in java by using the reflective APIs. > > I've been using the convention of naming private fields with a > trailing hyphen: {:foo "public" :bar- "private"} > > Here's a patch that adds syntax highlighting for this to clojure-mode. > > diff --git a/clojure-mode.el b/clojure-mode.el > index 2d82ab6..7f1c28f 100644 > --- a/clojure-mode.el > +++ b/clojure-mode.el > @@ -374,6 +374,8 @@ elements of a def* forms." > "\\(\\sw+\\)?" ) > (1 font-lock-keyword-face) > (2 font-lock-function-name-face nil t)) > + ;; Private keywords :foo- > + ("\\<:\\sw+-\\>" 0 font-lock-constant-face) > ;; Constant values. > ("\\<:\\sw+\\>" 0 font-lock-builtin-face) > ;; Meta type annotation #^Type > > > -- > jan > > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---