Hi all,

Gilles and I are stuck on a discussion of a few of the names in the API for the 
Euclidean vector classes (Vector1D, Vector2D, Vector3D) and I'd like to get 
some outside feedback. Our discussion has focused on ease of use, clarity, and 
mathematical accuracy. Below are a few of the options we've been discussing for 
class names and factory methods, in no particular order. I'm using Vector2D as 
an example here but the other classes would be similar. It would be very 
helpful if some of you could say which API you prefer and your reasoning behind 
it.

Note that each of the classes below would have getX(), getY(), and toPolar() 
methods (among many others). The toPolar() method returns an instance of a 
PolarCoordinates class.

a)
class Vector2D implements Vector {
    public static Vector2D ofCartesian(double x, double y);
    public static Vector2D ofPolar(double radius, double angle);
}

b)
class Vector2D implements Vector {
    public static Vector2D of(double x, double y);
    public static Vector2D fromPolar(double radius, double angle);
}

c)
class Cartesian3D implements Vector {
    public static Cartesian3D of(double x, double y);
    public static Cartesian3D ofPolar(double radius, double angle);
}

Thanks,
Matt J



Reply via email to