Possible Duplicate:
Properties vs Methods
I have some vector geometry classes, and there is lots of functionality I don't know whether to implement as (readonly) properties or methods. Examples include:
Vector.Length or Vector.Length()
Vector.Perpendicular or Vector.Perpendicular()
Matrix.Determinant or Matrix.Determinant()
Matrix.Inverse or Matrix.Inverse()
Should I implement these as methods, or as properties? None of them mutate the object they apply to, so in that respect, they seem suited as properties. On the other hand, they involve calculations (albeit small ones - this is 2D geometry), which is apparently bad for properties.
Is there any rule as to which I should use in this scenario?