As the initial instigator of the API facade types named State, responsible
for 17 out of the 20 State types defined in non-test code, let
me explain my reasoning for those.

As I see it, all the facade types are windows on some particular
aspect of the global juju state. They all implement methods
that adjust or query the state through that window.

Thus in some sense they really are all signifying
different aspects of the same thing, and to
my mind if you've got two very similar things in different
packages, it makes sense to name them the same.

How else would they be named? uniter.UniterState ? We don't
like stuttering. uniter.Uniter ? That would seem to
signify the uniter agent itself, which is not the case.
It's more of a pity that we duplicate the uniter package
name (worker/uniter vs api/uniter) than the type name,
IMHO.

I would tend to agree that new types that do not signify
the global juju state should probably be avoided where
reasonable, but I also agree with Andrew that type names
are explicitly contextual in Go - it's one of the things
that allows us to be able to choose nice names
without fear of clashing or ambiguity.

  cheers,
    rog.


On 12 March 2015 at 05:01, David Cheney <david.che...@canonical.com> wrote:
> lucky(~/src/github.com/juju/juju) % pt -i type\ State\ | wc -l
>
> 23
>
> Thank you.
>
> Dave
>
> --
> Juju-dev mailing list
> Juju-dev@lists.ubuntu.com
> Modify settings or unsubscribe at: 
> https://lists.ubuntu.com/mailman/listinfo/juju-dev

-- 
Juju-dev mailing list
Juju-dev@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/juju-dev

Reply via email to