Ich bin von Python, Ruby und PHP World und eine der Techniken, die ich versuche zu entfernen ist Argument-Reihenfolge Abhängigkeiten von meinem Code. Dies ist eine kurze Demonstration dieser Technik in Ruby implementiert:Wie vermeidet man Argument-Reihenfolge Abhängigkeiten in statisch getippten Sprachen wie Java oder C#
class Gear
attr_reader :chainring, :cog, :wheel
def initialize(args)
@chainring = args[:chainring]
@cog = args[:cog]
@wheel = args[:wheel]
end
...
end
Gear.new(
:chainring => 52,
:cog => 11,
:wheel => Wheel.new(26, 1.5)).gear_inches
Wie Sie den Client-Code muss nicht die Reihenfolge der Argumente wissen, sehen einen Gang Beispiel für die Initialisierung und Ich mag das. Aber jetzt frage ich mich, wie das Gleiche in statisch typisierten Sprachen wie Java implementiert ist und ich mich auch frage, ob Leute versuchen, solchen Techniken zu folgen oder nicht in dieser Art von Sprachen. Wenn jemand seine Erfahrung teilen und Democode zeigen kann (sei es in Java, C# usw.), wäre das großartig.
Wahrscheinlich wird das Fassadenmuster stattdessen verwendet, um die Clientseite zu vereinfachen? – Jacobian
Im Allgemeinen nicht; Sie können benutzerdefinierte Objektinstanzen als Parameter verwenden (zumindest in Java ist Ihre Argumentreihenfolge Teil der Methodensignatur). –
Es klingt, als ob Sie an Groovy interessiert sein könnten; es stellt sowohl benannte Initialisierer als auch etwas anderen Zucker zur Verfügung, den Sie suchen. – chrylis