On 08/14/2012 04:35 PM, Brian Anderson wrote:
Hey.

We need a consistent naming scheme for constructor functions. The
current convention is to give these functions the same name as the type
they create, so `core::dvec::dvec` is created by calling
`core::dvec::dvec()`.

We are in the process of changing our naming convention for types (as
well as variants - which will eventually be types) to camel case. So
very soon now your `Option` type will be created by calling `Some(foo)`,
because `Some` is both a type and a constructor. Functions, on the other
hand, will continue to have the lowercase + underscore convention.

This leaves the question of what to call functions that are
constructors. We could continue to name them after their types, but it's
a little weird:

     fn DVec() -> DVec { ... }

So now I need an alternate constructor. What do I call it?

     fn DVecWithParam(arg: foo) -> DVec{ ... }


Niko has convinced me that, under the current namespace rules, sticking with the current naming scheme of using the type name is best because this is the way that imports work out nicest:

    import belt_buckle::BeltBuckle; // give me the type and constructor

If we do merge the type and module namespaces, then you can still just import the type as above and construct it with `BeltBuckle::new()`.

My plan for now is to finish the camel casing of types, then go back through and find all the constructors and convert them. Then I will hope that we do the namespace merging so we can revisit the constructor issue again.

If that's acceptable, then the remaining question is of what to do with secondary constructors. I will punt on that for now because it doesn't show up much in existing library code.

_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to