a) move out helpers or core code
    out of the API name space
b) tag stuff left not part of the API
    as private in the  API name space
c) keep the API at the bottom
d) do the above iteratively as code
    evolves

So far it's been workable ( > 20000
locs so far). Not too much name
space switches while improving
or fixing code.

Luc P

> Hi everyone, I'm looking to get some opinions on code style.
> 
> Specifically, I like to write my code in a top-down.
> 
> What I mean by that is that within a file the highest-level functions sit 
> at the top, and are implemented in terms of lower-level functions further 
> down.
> 
> The idea is that through sensible naming, a reader should be able to stop 
> reading at any point and still know what's going on.
> 
> I was recently watching the prismatic schema presentation from the 2013 
> conj, and noticed they too promoted having a "public" section at the top of 
> the namespace.
> 
> 
> The problem now is because of the single-pass nature of clojure's 
> evaluation - simply writing code like this doesn't actually work.
> 
> There's a few approaches i've seen from reading other's code:
> 
> 1. Have an "impl" namespace which contains all of the helper functions for 
> the public "interface"
> 2. Make use of (declare) forms where necessary to improve forward 
> readability
> 3. Don't worry about source order, just have the api functions further down 
> the file and live with it
> 
> Some other options I considered include making really heavy use of 
> (declare), or even defining some sort of (eval-reversed) macro which runs 
> the code backwards.
> 
> 
> I'd like to know if people are experiencing this issue, and how you all are 
> resolving it?
> 
> 
> Cheers
> Glen
> 
> -- 
> 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.
> 
--
Luc Prefontaine<lprefonta...@softaddicts.ca> sent by ibisMail!

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