Helper-Methoden in C #: Statisch oder nicht statisch?

Ich habe eine Klasse mit einigen Funktionen, die realistisch gesehen nur Hilfsmethoden sind, die der Client-Code mit anderen Eigenschaften / Methoden des öffentlichen Zugriffsmechanismus selbst ausführen kann, und ich bin nicht sicher, ob ich diese mit einem Getter als Eigenschaften definieren soll. Instanzmethoden oder statische Methoden, die die Instanz als Parameter verwenden. Außerdem habe ich eine Schnittstelle aus der Klasse extrahiert, die fast überall verwendet wird, außer beim Konstruieren, damit mein Code jede Klasse verwenden kann, die für die Schnittstelle implementiert ist.

Die Frage ist, welche ist aus gestalterischer Sicht die beste? Zum Beispiel, um die Initiale von dieser Klasse zu erhalten:

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);
  }
}

Die Eigenschaft eignet sich für kürzeren, besser lesbaren Client-Code, erfordert jedoch, dass jeder, der eine Implementierung gegen IPerson vornimmt, seine eigene Implementierung schreibt, ebenso wie die Instanzmethode.

Die statische Methode würde bedeuten, dass das Implementieren von Klassen kein eigenes Schreiben erfordern würde, und mein Code kann garantieren, wie die Initiale basierend auf dem Namen bestimmt wird, aber es kann nicht auf der Schnittstelle sein, und der Client-Code ist ein bisschen mehr ausführlich.

Kommt es nur darauf an, ob es nicht eine gute Idee ist, implementierenden Klassen zu erlauben, anzugeben, wie Hilfsmethoden berechnet werden?

EDIT: Nebenbei bemerkt, warum kann ich SO nicht das Best-Practices-Tag hinzufügen?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage