(This has been discussed before but as this is fairly subjective I am 
interested in whether people's opinion has changed)

What are people's experiences around using keywords or defined accessors 
for navigating data structures in Clojure (assuming the use of maps)?  Do 
people prefer using "raw" keywords or do people define accessors.

For example, given {:my-property 10} would people inline "my-property" or 
define a (defn my-property [m] (:my-property m))?  If you use keywords then 
do you alias them (i.e. (def my-property :my-property)?

My experience is that accessors become painful and restrictive really 
quickly (navigating nested maps for example) so keywords are the way to go. 
 I tend to have a domain.clj which documents my domain and defines all the 
important abstractions (i.e. (def my-property :my-property).  I find this 
very useful, combined with marginalia for documentation purposes.  It also 
offers some aid in refactoring as multiple abstractions might resolve to 
the same keyword (i.e. value-group and bracket-group might resolve to 
:group).

But, to be blunt, it can be a little cumbersome.  I also refer :as the 
namespace, so instead of (get-in m [:a :b]) it is (get-in m [dom/a dom/b]).

What are your thoughts (and any other hints/tips for maintaining large 
Clojure code bases?)

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