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.

Reply via email to