【发布时间】:2010-08-30 20:51:25
【问题描述】:
我有一个包含一些函数的类,这些函数实际上只是“帮助”方法,客户端代码可以使用其他公共访问器属性/方法自行完成,我不确定是否应该将这些定义为具有getter、实例方法或将实例作为参数的静态方法。此外,我还从类中提取了一个接口,该接口几乎在除构造之外的所有地方都使用,以允许我的代码使用针对该接口实现的任何类。
问题是,从设计的角度来看,哪个最好?例如,作为从此类中获取初始值的一种方式:
class Person : IPerson {
private string name;
public string Name { get { return this.name; } }
// Property with getter
public string Initial { get { return this.name.Substring(0,1); } }
// Instance method
public string GetInitial { return this.name.Substring(0,1); }
// Static method
public static string GetInitial(IPerson person) {
return person.Name.Substring(0,1);
}
}
该属性适用于更短、更易读的客户端代码,但要求任何针对 IPerson 实现的人编写自己的实现,实例方法也是如此。
静态方法意味着实现类不需要自己编写,我的代码可以保证初始是如何根据名称确定的,但这意味着它不能在接口上,客户端代码是一个稍微详细一点。
这只是归结为允许实现类指定如何计算辅助方法是否是个好主意?
编辑:除了次要,为什么不让我添加最佳实践标签?
【问题讨论】:
-
似乎还没有最佳实践标签。您需要至少 1500 声望才能创建新标签。
-
这很奇怪..肯定有,我过去用过。
-
元标签的消亡(例如最佳实践):blog.stackoverflow.com/2010/08/the-death-of-meta-tags
-
@M4N:当我试图确定哪种通用方法更适合相当广泛的问题时,我认为最佳实践是一个有用的标签。也许这个问题不应该被表述为总体上哪个更好,而是在不同的情况下,利弊会支持或反对不同的方法。这似乎是一个公平类型的问题,与“为什么代码 X 打印 Y?”是不同类别的问题。或“我该怎么做 X”。可以肯定的是,后一种问题可能会演变成前一种。 “X 真的是这里最好的方法,还是 Z 可能会更好?”
标签: c#