Вспомогательные методы в C #: статические или нестатические?
У меня есть класс с некоторыми функциями, которые на самом деле являются просто «вспомогательными» методами, которые клиентский код может делать сам с другими свойствами / методами общедоступных средств доступа, и я не знаю, следует ли мне определять их как свойства с помощью метода get, экземпляра методы или статические методы, которые принимают экземпляр в качестве параметра. Кроме того, у меня также есть интерфейс, извлеченный из класса, который используется почти везде, кроме конструирования, чтобы мой код мог использовать любой класс, реализованный для интерфейса.
Вопрос в том, что лучше с точки зрения дизайна? Например, как средство получения начального значения из этого класса:
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, написать свою собственную реализацию, как и метод экземпляра.
Статический метод будет означать, что реализации классов не нужно будет писать свои собственные, и мой код может гарантировать, что начальная буква определяется на основе имени, но это означает, что она не может быть в интерфейсе, а клиентский код немного более многословен. ,
Это просто сводится к тому, не является ли хорошей идеей позволить классам реализации указывать, как вычисляются вспомогательные методы?
РЕДАКТИРОВАТЬ: незначительно в стороне, почему бы не позволить мне добавить тег передовой практики?