Dies wurde in der Entwicklung von C ++ vorgeschlagen, und Stroustrup erörtert dies in seinem "Design and Evolution of C ++", Seite 153 und folgende. Der Vorschlag war wohlgeformt und stützte sich auf frühere Erfahrungen mit Ada. Es wurde nicht adoptiert.
Der Hauptgrund war, dass niemand Funktionen mit einer großen Anzahl von Parametern fördern wollte. Jede zusätzliche Funktion in einer Sprache kostet etwas, und es bestand kein Wunsch, eine Funktion hinzuzufügen, um das Schreiben fehlerhafter Programme zu vereinfachen.
Es wurden auch Fragen zu den kanonischen Parameternamen aufgeworfen, insbesondere in der üblichen Konvention für Header und Codedateien. Einige Organisationen hatten längere und aussagekräftigere Parameternamen in der .h-Datei und kürzere und einfacher einzugebende Namen in der .cpp-Datei (Ersatzdateisuffixe nach Wunsch). Das Erfordernis, dass diese identisch sind, würde zusätzliche Kosten für die Kompilierung verursachen, und das Verwechseln von Namen zwischen Quelldateien könnte subtile Fehler verursachen.
Es kann auch mithilfe von Objekten anstelle von Funktionsaufrufen behandelt werden. Erstellen Sie anstelle eines GetWindow-Aufrufs mit einem Dutzend Parametern eine Window-Klasse mit einem Dutzend privater Variablen und fügen Sie bei Bedarf Setter hinzu. Durch Verketten der Setter ist es möglich, so etwas wie zu schreiben my_window.SetColor(green).SetBorder(true).SetBorderSize(3);
. Es ist auch möglich, verschiedene Funktionen mit unterschiedlichen Standardeinstellungen zu haben, die die Funktion aufrufen, die die Arbeit tatsächlich erledigt.
Wenn Sie sich nur Sorgen über den Dokumentationseffekt von machen contentFetcher.DownloadNote(note, manual : true);
, können Sie immer so etwas schreiben contentFetcher.DownloadNote(note, /* manual */ true);
, sodass es in der Dokumentation nicht einmal sehr hilfreich ist.