Frage

Was ist die beste „Daumenregel“ zu bestimmen, wann Methode Überlastungen zu verwenden und wenn eine separate „Anforderung“ Klasse zu benutzen? zum Beispiel:

MakePancakes(int size)
MakePancakes(int size, bool addBlueBerries)
MakePancakes(int size, bool addBlueBerries, ...)

Im Gegensatz zu:

MakePancakes(PancakeOptions options)

Ist es am besten zu dem einen oder dem anderen zu bleiben, oder entweder als „notwendig“? Gibt es einen Punkt, wann oder wo soll man über die andere verwendet werden?

Wie entscheiden Sie, welche zu verwenden und warum?

War es hilfreich?

Lösung

Der eigentliche Vorteil von MakePancakes (PancakeOptions Optionen) ist, dass Sie die Anzahl der Attribute von PacakeOptions ändern können, ohne die Implementierung der Methode zu ändern. Es kann hilfreich sein, wenn die Anzahl der Parameter kann oder optional ändern. Es ist sinnvoll, um Konfigurations / Eigenschaften / Optionen auf diese Weise darstellen.

Aber ich glaube nicht, dass ein Ersatz für eine Überlastung Methode ist.

Einige Faustregel:

  • , wenn eine Methode mehr als 5 Argumente hat, dann ist es wahrscheinlich mehr als 1 zu tun. Ich würde das Verfahren überprüfen und versuchen, es in spezifischere Funktionen aufgeteilt.

  • Alle Attribute eines Verfahrens erforderlich sind (das heißt nicht null sein)

Andere Tipps

würde ich nicht viele Überlastungen mich brauchen, bevor ich einen Anforderungstyp oder Enum erstellt (Array von Enum scheint wie ein ziemlich einfaches Request-Objekt). Vielleicht 3-4? Einige Rahmen Methoden 9-10 Überlastungen und ich finde, dass ein bisschen ärgerlich zu sein, aber das ist eher eine Art Frage, denke ich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top