Lassen Sie mich Sie falsch zitieren, um meinen Standpunkt klar zu machen:
Ich schreibe mehrere Funktionen, die andere Funktionen aufrufen. Um die Informationen weiterzugeben, habe ich zwei Möglichkeiten:
- Übergeben Sie die Informationen als Argumente.
- Verwenden Sie globale Variablen.
Wann sollte ich eine Option der anderen vorziehen?
Es ist allgemein anerkannt, dass ein nicht lokaler Staat eine schlechte Idee ist. Sie sollten die Informationen daher im Allgemeinen mithilfe von Parametern übergeben, nicht über Variablen in einem gemeinsamen Bereich. Dies wird einfacher, wenn Sie verwandte Informationen zu Objekten oder Strukturen zusammenfassen.
Das Übergeben zu vieler Parameter ist ein Codegeruch, und es kann wahrscheinlich überarbeitet werden, um einige weitere Klassen zu verwenden. Nehmen Sie einen pathologischen Fall an, in dem Sie ein Adressbuch schreiben und eine Methode haben add_contact(surname, firstname, fullname, ...)
. Es wäre besser, dies in eine Name
Klasse zu gruppieren , ebenfalls für Teile einer Adresse : add_contact(name, address)
.
Wenn jedoch die für Ihre Funktion erforderlichen Parameter völlig unabhängig sind, versucht Ihre Methode möglicherweise zu viel und sollte in kleinere Teile umgestaltet werden.
Ich denke nicht, dass die Verwendung von Instanzvariablen eine gute Lösung ist: Sie ist eine unnötige Mutation des Zustands und bringt alle Probleme globaler Variablen in kleinerem Maßstab mit sich. Auf diese Weise liegt nicht debuggbarer Spaghetti-Code.