Ich habe eine Hilfsklasse, die ein Objekt nimmt, verarbeitet es und gibt eine Instanz der anderen Klasse oder sogar die Liste der Objekte zurück. Was wäre der beste Weg: diese Hilfsmethode statisch oder nicht-statisch zu machen? Die Sache ist, dass meine App viele der Auto-Objekte erstellen kann und ich dachte, ob es einen negativen Effekt haben könnte, wenn jeder von ihnen den statischen Helfer benutzt?Verwenden von statischen Methoden in der Hilfsklasse vs nicht statische
Antwort
Die meisten Hilfs- oder Hilfsklassen verwenden statische Methoden. Sie sollten nur nicht statische Methoden verwenden, wenn Sie mehrere Instanzen Ihrer Hilfsklasse erstellen möchten, aber da Sie nur eine einfache Eingabe -> Funktion -> Ausgabe benötigen, würde ich die Methoden statisch machen.
Das ist falsch. Sie sollten statische Klassen/Methoden nur verwenden, wenn es einen guten Grund dafür gibt, dass sie statisch sind und nicht umgekehrt. –
@shay__ als wäre es eine Hilfsmethode, die sich nicht auf einen Zustand bezieht oder überschrieben werden muss? –
@shay__ Hilfsklassen sind normalerweise statisch. das Instanziieren eines Objekts für ein einzelnes nicht verwandtes Verfahren ist redundant. Sein Vorschlag ist nicht falsch, Sie haben ihn falsch verstanden. – Stavm
Wahrscheinlich ist dies etwas, das gelöst werden kann, ohne den Lebenszyklus des Hilfsobjekts zu bestimmen, wo Sie es benötigen.
Sie sollten versuchen, Dependency Injection Ansatz zu nutzen:
public class X
{
public X(IHelper helper)
{
Helper = helper;
}
private IHelper Helper { get; }
public void DoStuff()
{
var result = Helper.DoOtherStuff(input);
}
}
Das heißt, X
nicht wissen, ob Helfer immer die gleiche Instanz ist oder wenn es ein vorübergehendes Objekt. Dies macht den Code sauberer und testfreundlicher, weil Sie den Helfer mit einer falschen IHelper
Implementierung verspotten können, um sicher zu sein, dass Sie nur X
testen.
Ich würde den Typ auf "IHelper" in Ihrem Beispiel ändern, um zu betonen, dass es keine Kopplung zwischen 'X' und seinem Helfer gibt –
@shay__ Ich dachte darüber nach ... Ich kann es ändern, kein Problem .. –
Verwenden Sie statische Klasse mit statischen Methoden, keine Instanz, keine Ableitung und nur statische Methoden in der Klasse.
public static class HelperClass
{
public static void HelperMethod()
{
// do something
}
}
- 1. Nicht statische Methoden vs Utilty mit statischen Methoden
- 2. Verwenden von privaten statischen Methoden
- 3. Statische Methoden vs Instanz Methoden in C#
- 4. Statische Methoden oder keine statischen Methoden in der Dao-Klasse?
- 5. Mongoose 'statische' Methoden vs. 'Instanz' Methoden
- 6. Dependency Injection mit einem statischen Logger, statische Hilfsklasse
- 7. Verwenden der statischen Methode vs. Objektmethode
- 8. Funktionen vs. statische Methoden
- 9. Leistung der statischen vs nicht statischen Methode für eine Nutzungsklasse
- 10. C++ Singleton Vs statische Methoden
- 11. Erweiterungsmethode vs. Hilfsklasse
- 12. Statische enum vs. nicht statische enum
- 13. Methode überladen mit statischen und nicht statischen Methoden
- 14. Statische Methoden in ASP.NET
- 15. Warum nicht statische Methoden für CBVs verwenden?
- 16. Zugreifen auf nicht statische Elementvariablen aus statischen Methoden
- 17. Leistung der Verwendung von statischen Methoden vs. Instanziierung der Klasse mit den Methoden
- 18. Hilfsklasse (n) vs funktionale Vererbung. Best Practice
- 19. Klassen mit nur öffentlichen statischen Methoden vs instanziierten Klassen
- 20. Version der abstrakten Methoden für statische Methoden in TypeScript
- 21. Nachteile von statischen Methoden in PHP
- 22. statische Methoden oder normale Methoden in Bibliotheken
- 23. nicht statische Methode kann nicht aus statischen Kontext verwiesen werden
- 24. Statische Methoden in ES6 übernehmen
- 25. Thread-Sicherheit zwischen statischen Methoden und einem statischen Block
- 26. Öffentliche statische Methoden und öffentliche Methoden
- 27. Statische Methoden vs Repository-Muster mit Linq2Sql
- 28. Statische Methode vs Modul-Funktion in Python
- 29. Verwenden der statischen Methoden der Validierungsklasse im Tabellenvalidierer
- 30. Statische vs nicht-statische Klassen
Haben Sie einige Beispielcode als helfen, die am besten geeignete Antwort auf Ihre Frage –
@ J.Doe Yup zu geben. Ihr Auto könnte einen platten Reifen haben. Witze auseinander, können Sie uns bitte etwas Code zeigen. – CKing
Müssen Sie beim Testen Ihrer Klasse einige Funktionen ausprobieren (das Original, nicht die Helferklasse)? In diesem Fall sollten Sie keine statischen Methoden verwenden. –