Ich habe wenig Eindruck davon, dass Variablen die Reihenfolge auflösen, aber ich kann sie im CFML-Referenz- oder ColdFusion-Entwicklerhandbuch nicht finden. Kann jemand helfen?
Es ist eine allgemein anerkannte Best Practice für immer , dass Sie Ihre Variablen aus zwei Hauptgründen betrachten:
Das heißt, hier wird nach den Ordnungsvariablen-Bereichen gesucht:
BEARBEITEN: Es wird auch darauf hingewiesen, welche Bereiche nicht durchsucht werden: SESSION, SERVER, APPLICATION
Die kanonische Bereichsreihenfolge für ColdFusion 9 lautet:
Sie können die Adobe-Dokumentation dazu in ColdFusion 9-Anwendungen entwickeln einsehen.
Einige Bereiche sind jedoch nur in bestimmten Kontexten verfügbar, sodass die Reihenfolge, in der Bereiche gesucht werden, je nach Kontext des Codes unterschiedlich ist.
Wie Al Everett in seiner Antwort feststellt, wird es als Best Practice für immer Scope-Variablen angesehen. Explizites Scoping erzeugt weniger mehrdeutigen Code und ist normalerweise schneller. Jedes Mal, wenn Sie keine Variable definieren, riskieren Sie, eine Variable aus einem Bereich zu erhalten, die Sie nicht beabsichtigen.
Wenn sich die Variable, auf die Sie zugreifen, im ersten Bereich in der Suchreihenfolge befindet, ist es tatsächlich etwas schneller, die Variable nicht zu definieren. Dies liegt daran, dass jeder Punkt in einem Variablennamen geringe Kosten verursacht, wenn ColdFusion ihn auflöst. Zum Beispiel ist es in einer CFC-Methode etwas schneller, auf
myVar
alslocal.myVar
zuzugreifen. Dies gilt nur für:
local
umschriebene Variablen innerhalb eines CFC oder UDF- Thread
local
beschränkte Variablen innerhalb eines Threadsvariables
beschränkte Variablen in CFMLUnter allen anderen Umständen ist es schneller (und klarer), den Bereich explizit zu deklarieren.
Die Verwendung dieser Technik sollte als schlechte Praxis angesehen werden. Sie sollten diese Technik nur in performancekritischem Code verwenden, wo Sie garantieren können, dass die Variable immer im beabsichtigten Gültigkeitsbereich vorhanden ist. Denken Sie daran, dass es auf Kosten der Mehrdeutigkeit geht.
Tags und Links scope variables coldfusion