I'm not sure if this is idiomatic, but I often like to refer any def* functions or macros, and :as alias the rest. I just prefer the visual look of a bare def without a prefix. There's usually only a couple of those in a codebase so it doesn't add too much overhead. On Mon, 18 May 2015 at 4:05 am John Wiseman <jjwise...@gmail.com> wrote:
> There's a close parallel in Python, where the same issue comes up of > typically using several modules or packages in a source file and the > language offers a way to import the functions and classes of those modules > in such a way that they can be used without any syntactic marker of their > origin. For years I've used the Google style guideline > <https://google-styleguide.googlecode.com/svn/trunk/pyguide.html#Imports> > which says "Use imports for packages and modules only", as distinct from > functions, classes, etc., and the justification is "The source of each > identifier is indicated in a consistent way; x.Obj says that object Obj is > defined in module x". > > I've found that when reading code that I haven't written it lowers the > friction for understanding just a little bit but that's multiplied by > roughly the number of names in the source code. It makes it (mostly) > self-evident whether an identifier names a concept from the file I'm > looking at, or somewhere else. And if it's from somewhere else, it says > right there where that other place is. It's a significant advantage and I > think the same advantage applies to clojure source code. > > > > > On Sun, May 17, 2015 at 8:28 AM, Colin Yates <colin.ya...@gmail.com> > wrote: > >> As stated in the article, I find the extra context of using :as aids >> maintenance more than you might expect. The only time I use refer is >> if the referred vars are conceptually owned, or the context is >> implicit by the name space using them. For me it is about >> responsibility and ignorance. :as implies distance/ignorance, :refer >> implies closeness/knowledge. >> >> A concrete example, in my use-case tests I refer most vars from >> clojure.test for convenience but the thing being tested is aliased as >> 'sut'. I could swallow referring the forms being tested in the test >> case as well but I am used to the convention of 'sut' (subject under >> test). >> >> >> On 17 May 2015 at 16:23, Akiva <akiva.sch...@gmail.com> wrote: >> > Makes sense. I guess my other question then would be if there are any >> > benefits to using :refer along with :as. >> > >> > :A. >> > >> > Stuart Sierra >> > May 17, 2015 at 10:21 AM via Postbox >> > Just like the rest of the article, it's about readability. With >> `:refer` you >> > don't know where a symbol came from when you encounter it in the middle >> of >> > the code. >> > >> > –S >> > >> > >> > >> > On Sunday, May 17, 2015 at 4:05:14 PM UTC+1, Akiva Schoen wrote: >> > -- >> > 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. >> > Akiva >> > May 17, 2015 at 10:04 AM via Postbox >> > In Stuart Sierra's article here >> > (http://stuartsierra.com/2015/05/10/clojure-namespace-aliases), he >> > recommends to use :refer sparingly but doesn't explain why this is a >> good >> > idea. Only thing I could think of without putting too much effort into >> it is >> > that it makes it slightly more tedious when you want to use a function >> from >> > a namespace that hasn't been already explicitly referred. >> > >> > Are there no benefits other than possibly excluding function names that >> > might otherwise suffer a namespace clash (assuming their namespace isn't >> > being aliased already)? >> > >> > Thanks, >> > Akiva >> > >> > >> > -- >> > Sent from Postbox >> > >> > -- >> > 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. >> >> -- >> 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. >> > > -- > 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. > -- 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.