【发布时间】:2011-09-12 15:49:48
【问题描述】:
我有一些矢量几何类,有很多功能我不知道是作为(只读)属性还是方法来实现。示例包括:
Vector.Length or Vector.Length()
Vector.Perpendicular or Vector.Perpendicular()
Matrix.Determinant or Matrix.Determinant()
Matrix.Inverse or Matrix.Inverse()
我应该将它们实现为方法还是属性?它们都不会改变它们应用的对象,因此在这方面,它们似乎适合作为属性。另一方面,它们涉及计算(尽管很小 - 这是二维几何),这显然对属性不利。
在这种情况下我应该使用哪些规则?
【问题讨论】:
-
@Kristopher:这些给我的印象是边缘情况:它们没有副作用,但包括计算。
-
属性是用来计算的,而不仅仅是getter和setter。他们在那里进行统一访问,以便您可以例如表示 (x,y) 坐标中的一个点,并且仍然提供对 (r,theta) 的访问作为“属性”,而用户不会注意到它。
-
@Yet Another Geek:好点。这将
Vector.Length和Matrix.Determinant放在了财产方面。其他两个我不确定。
标签: c# properties semantics