Javascript: Verschachtelung von privaten Funktionen - gut oder schlecht?

8

Ich benutze diese Struktur häufig:

%Vor%

Was ich wissen möchte, ist folgendes: Wenn privateFn1 die einzige Funktion / Methode ist, die privateFn2 aufruft, wird es als bessere Praxis angesehen, sie wie folgt einzurichten?

EDITED für Klarheit

%Vor%

Dies ist natürlich ein sehr vereinfachtes Beispiel. Das Problem ist, dass ich viele private Funktionen habe, und ich frage mich, ob das Nisten gut oder schlecht betrachtet wird. Ich erkenne, dass es wahrscheinlich eine Frage der Präferenz ist, aber jeder Rat wird dankbar angenommen.

Danke.

    
Nick 08.08.2012, 21:37
quelle

2 Antworten

5

Es hängt von der Situation ab. Wenn Sie mehrere private Funktionen haben, die nur zu einer anderen privaten Funktion relavent sind, dann ist dies vielleicht eine Situation, in der das Objekt oder die Klasse mehr Funktionalität paketiert, als es sein sollte.

Hier sind einige Fragen zu stellen:

  • Haben diese privaten Funktionen Nebenwirkungen? Das heißt, sind sie manipulierte geschlossene Eigenschaften? Wenn nicht, ist das verallgemeinert Logik, die statisch implementiert und enthalten sein könnte separat? Oder manipulieren diese privaten Funktionen eine Teilmenge von Eigenschaften, die in eine andere Klasse oder ein anderes Objekt verschoben werden könnten?
  • Sind die privaten Funktionen einfache aufgabenspezifische Hilfsfunktionen, die darin verwendet werden sollen ein größerer Algorithmus oder eine größere Steuerfunktion; wie eine Filterfunktion zum Sortieren eines Array oder eine andere Art von Iterationsrückruf? Wenn ja, dann kann es tatsächlich sein sauberer, um diese Funktionen im Inneren zu verschachteln und sie außerhalb des Geltungsbereiches des Hauptbereichs zu halten Objekt. Wird ein anderer Code diese Funktionen benötigen?
  • Wie oft wird die private Hauptfunktion aufgerufen? Wenn es sehr heißen wird häufig (innerhalb einer Schleife oder in einem Timer-Intervall) und dann die Private Funktionen im Inneren könnten einen messbaren Overhead verursachen - was sonst vernachlässigbar gewesen wäre, hatte die private Funktion wurde nur gelegentlich genannt.

Es gibt immer Abwägungen, die Sie berücksichtigen sollten. Wenn Sie über diese Fragen nachdenken, können Sie entscheiden, was für Ihre spezielle Situation am besten ist.

    
Peter 08.08.2012, 22:24
quelle
3

Ich würde Ihr zweites Beispiel vermeiden. Jedes Mal, wenn privateFn1 aufgerufen wird, definiert es privateFn2 neu. Warum nicht einfach einmal machen? Sie müssen es möglicherweise später irgendwo anders verwenden.

Wenn Sie jedoch privateFn2 wirklich ausblenden möchten, ist dies eine bessere Lösung:

%Vor%     
Brian Ustas 08.08.2012 21:39
quelle

Tags und Links