Ich habe Bibliotheken gesehen, die beim Schreiben von Funktionen die Vorteile optionaler Parameter und Rückrufe nutzen. Ich schreibe eine Bibliothek, und ich würde gerne wissen, ob es eine gute Übung ist, dem Benutzer zu erlauben, die optionalen Parameter zu überspringen und einfach den Rückruf zu senden.Verwenden von Rückrufen mit optionalen Parametern
Zum Beispiel:
function listFiles(params, callback) {
if (typeof params === 'function' && !callback) {
callback = params;
params = {};
}
// more code here...
}
Benutzer meiner Bibliothek kann listFiles()
mit Parametern aufrufen:
listFiles({ verbose: true }, function callback(err, results) { /*... */ })
oder Weitergabe nur die callback()
Funktion:
listFiles(function callback(err, results) { /*... */ })
Der Hauptvorteil sehe ich Bei diesem Ansatz müssen Benutzer Folgendes nicht tun:
listFiles(null, function callback(err, results) { /*... */ })
oder
listFiles({}, function callback(err, results) { /*... */ })
Das Problem ist, dass, wenn ich verbose
einen erforderlichen Parameter mache ich brechen werden Benutzer, die nicht params
zusammen mit denen, sendeten die leer oder null als params
sendeten.
Sollte ich optionale Parameter als Rückruf verwenden oder ist das eine schlechte Idee?
als Kommentar hinzufügen, weil dies eher eine Regel-of-Daumen ist: Wenn Sie vernünftig, dass das erste Argument erwarten beco könnte Ich brauche, machen Sie es nicht optional. Persönlich ist die Stabilität, die man durch das Setzen von "params" benötigt (anstatt nur den Callback zu erlauben), besser als der kleine Vorteil, dass man nicht "null" oder "{}" angeben muss. – FeifanZ
Warum Parameter nicht den zweiten Parameter machen? Dann könnten Sie einfach feststellen, ob es definiert ist oder nicht. –
@ChrisHappy spricht nicht für OP, aber Callback-as-Last-Argument ist eine weit verbreitete JS-Konvention. IMO wäre es schlimmer, mit dem – FeifanZ