Coding Verwenden Kongresse und Nicht-Konfigurationen

Coding Verwenden Kongresse und Nicht-Konfigurationen

  

Problem Sie möchten Ihre JavaScript-Konstrukte effizienter durch die Anwendung des Rails "Convention over Configuration"-Prinzip zu ihnen. Theorie, die Sie möglicherweise bereits mit der Programmierung vertraut Plattform Ruby on Rails, die verwendet wird, um Web-Anwendungen zu erstellen. Der Schwerpunkt dieses Rezept ist nicht Ruby on Rails, aber nur ein Aspekt von Ruby on Rails, nämlich Übereinkommen über die Konfiguration (siehe http://en.wikipedia.org/wiki/ Ruby_on_Rails für weitere Informationen hierzu). Stellen Sie sich das Schreiben von Tests und realisieren, dass Sie verwenden eine gleiche Menge von Anweisungen, immer und immer wieder. Wenn Sie den Code konvertieren aus der wiederholten Code in generischen Code, erstellen Sie einen Rahmen. Der Rahmen kann auf zwei Arten erstellt werden. Die erste Möglichkeit ist es, Infrastrukturen zu schaffen und Draht zusammen, und die zweite ist die Annahmen über Ihren Code zu machen. Betrachten Sie das folgende JavaScript JSUnit Test:

var testsToRun = (/ / Start JavaScript-Code für Testfälle hier testPlainVanilla: function () (/ / etwas Code testManager.success ();) / / End JavaScript-Code für Testfälle); testManager.setTestCases (testsToRun);

Die Details, was die Variablen und Klassen, sind nicht relevant. Entscheidend ist vielmehr, wie sie miteinander verkabelt sind. Die testsToRun Variable enthält eine Reihe von Methoden, mit denen insbesondere Prüfungen auszuführen sind. Bei jeder Prüfung erfolgreich abgeschlossen wurde, ist die testManager.success-Methode aufgerufen. Die testsToRun Variable ist mit keiner anderen Methode verbunden sind, Daten-Mitglied, oder die Funktion ganz einfach gesagt, ist testsToRun hängt wie eine Fahne im Wind. Natürlich wollen wir nicht testsToRun in den Wind zu hängen, wir wollen, dass die Versuche für ausgeführt.

Die Prüfungen werden von den TestManager Variable ausgeführt und TestManager hat keine Kenntnis von testsToRun. Die Herausforderung besteht darin herauszufinden, wie man TestManager bewusst testsToRun und, sobald sie einmal bewusst ist, um die enthaltenen Tests ausführen. Die Verdrahtung der TestManager zu testsToRun kann eine Konvention oder einer Konfiguration. Im obigen Beispiel ist die Lösung verwendet, um TestManager bewusst ist testsToRun Konfiguration. In der klassischen Programmierung Bedingungen können Sie die Konfiguration denken als eine Datei auf eine Festplatte mit Stücken von Text, der durch einen Algorithmus analysiert werden. Dieser Prozess ist eine Konfigurationsdatei, aber es ist nur eine Art der Konfiguration. Eine andere Art bekannt als programmatischen Konfiguration beinhaltet den Quellcode der Klassen erzählen, wie alles miteinander verkabelt. Ich werde nicht auf die Vor-und Nachteile der verschiedenen Konfigurations-Typen decken genügt die Feststellung, dass die Konfiguration wird verwendet, um zusammen unbekannt Implementierungen Draht zu einem funktionierenden System zu schaffen. Konfiguration wird häufig verwendet, weil es eine einfache Möglichkeit, ein funktionierendes System zu schaffen. Konfiguration erfordert kein Deduktionsalgorithmus, sondern muss sie nur ein Algorithmus, der eine Konfigurationsdatei oder ein Programmierer, der Draht-Implementierungen können gemeinsam analysiert werden kann. Kurz gesagt, erfordert die Konfiguration der Programmierer oder Administrator, um einige der schweres Heben herauszufinden, was zu tun ist, um Stück das andere Stück verdrahtet. Wenn etwas nicht funktioniert, dann kann das System sagen: "Hoppla, das nicht funktioniert.

Try again. " Übereinkommen kann zu sein scheinen ein komplizierter Weg, um ein funktionierendes System erstellen, die mehr Kunst als Wissenschaft. Als Analogie, in dem Film I, Robot, Der Schauspieler Will Smith spielt einen Polizisten, Del Spooner, der nicht wie ein Roboter. Während der Roboter Verhörszene, Spooner blinzelt ein anderer Polizist Ausscheiden aus dem Raum in Frage. Der Roboter fragt, was das bedeutete, Will Augenzwinkern, und Spooner erklärt, dass die etwas Augenzwinkern, dass ein Mensch kennt. Zu einem späteren Zeitpunkt im Film verwendet der Roboter einen Wink an amessage an Spooner schicken. Spooner ist überrascht, aber er weiß, was es bedeutet und entsprechend handelt. Wie funktioniert das Augenzwinkern beziehen sich auf die Konvention? Um jemanden, der weiß, was die Zuzwinkern wird, ist es einem einfachen Stück Information, dass viele Auswirkungen hat. Um jemanden, der nicht weiß, was einen Wink, wird sie als irrelevant zurückgewiesen.

Eine Person, die einen Wink weist es fehlt ein Stück wichtige Informationen und könnte der Schleife des Wissens betrachtet. Der Wink ist ein kompliziertes Stück von Informationen, die den Kontext, um vollständig zu verstehen erfordert. Eine Kritik von Ruby on Rails ist, dass es mehr Kunst als Wissenschaft, und damit nicht logisch, da es Konvention verwendet mit anderen Worten, es ist wie das Augenzwinkern, und wenn Sie nicht über den Kontext zu verstehen, macht es nicht Sinn. Ich möchte gegen diese Konfiguration Konvention verwendet, und somit ist eine Konvention. Im einfachsten Fall ist die Konfiguration selbsterklärend, sondern in einem komplexen Fall einer Konfigurationsdatei ist eine Konvention, alle auf ihre eigene. Um die Konfiguration zu verstehen, muss man zu dem Übereinkommen der Konfiguration, der die Frage stellt sich, warum eine Konfiguration verwenden? Die Antwort ist, dass manchmal eine Konfiguration die passende Lösung ist, denn es bietet Flexibilität; Mit der Konvention, müssen Sie die Dinge nach einem vorgegebenen Maßnahmen in ihrer Gesamtheit. Der Grund-Konfiguration hat sich zu einer Konvention ist, daß in vielen Fällen, Entwickler glauben, die sie benötigen, um die Konfiguration verwenden, um die Flexibilität, während in Wirklichkeit Konvention gewesen wäre gut genug zu gewinnen. Durchführungsübereinkommens erfordert, die die Reflexion, weil eine Entscheidung auf Konvention zu machen, Sie müssen für den aktuellen Kontext kennen. Der große Vorteil bei der Verwendung Konvention ist, daß Sie nicht brauchen, um die Konfiguration beizubehalten, wenn Änderungen auftreten, eine Konvention nimmt automatisch die neuesten Änderungen. Im Folgenden werden einige Szenarien, in denen Sie Konvention über die Konfiguration benutzen würde:

• Wenn Sie brauchen, um ständig zu aktualisieren und zu verwalten Cross-Referenz-Informationen (zB Datenbank-Spalten, die zur Klasse Datenelemente abgebildet werden).

• Wenn Sie Ihre Konfiguration ist nur von Bedeutung für Entwickler und nicht als Administrator an. Zum Beispiel, würde erwarten, dass Sie ein Administrator, um zu konfigurieren, die Datenbank Ihrer Bewerbung möchten sich verbinden. Aber Sie würden nicht erwarten, dass der Administrator die Konfiguration, welches Modell gehört, die Aussicht und die Controller in Amodel-View-Controller (MVC)-Architektur.

• Wenn Sie Reflexion und Methoden aufrufen anonym nutzen, ohne zu wissen, die Typ-Information. Es ist möglich, Übereinkommen über Programmiersprachen wie C # und Java umzusetzen, da sie Überlegungen zu unterstützen, sondern die Fähigkeit, Methoden aufrufen anonym ist viel komplizierter. Mit dynamischen Sprachen wie JavaScript und Ruby, ist es sehr einfach, Methoden oder Eigenschaften über die Arten nennen.

• Wenn Sie brauchen, um Ihren Nutzern (und sich selbst) mit Hinweisen, wenn etwas schief geht, geben. Wenn Sie Konventionen, ist es sehr wichtig, um deutlich anzugeben, was falsch ist, wenn etwas nicht funktioniert. Ruby on Rails hat eine sehr gute Arbeit bei der Bereitstellung von Hinweisen über das, was als nächstes zu tun, wenn etwas schief geht. Diese Funktion ist wichtig, weil das Schreiben von Code für ein System, das Übereinkommen nur, wenn Sie wissen, die Konvention verwendet. Lösung Für dieses Rezept, werden wir das Gerät convert-Test-Framework zuvor beschrieben in eine völlig convention-basierte Systeme. Dann, als Unit-Tests schreibt, wird unsere einzige Aufgabe sein, eine Reihe von Tests in einer Struktur, sowie der Unit-Test-Framework wird den Rest erledigen. Zur Veranschaulichung, laß uns den von der Unit-Test-Vorlage wieder und identifizieren die Stücke aussehen , die aus einer Konfigurationsdatei Ansatz für eine Konvention Konzept umgesetzt werden müssen.

 Quelle: / Jaxson / trunk / website / root / scripts / templates / testcontract.html  Contract Test Page 

Verfügbare Tests

Test Status
value = "Test-Prototyp" /> Nicht ausgeführt

Trace-Ausgabe

Die fetten Linien im obigen Beispiel repräsentieren Konfigurations-basierten Code, der in die Konvention umgesetzt werden basierend-Code. Bei der Umwandlung von Konfigurations-basierten Code convention-basierten Code, können Sie beantragen, einen von zwei Ansätzen. Der erste Ansatz besteht darin, die Klassen, die von der verwendeten Einheit-Test-Framework, so dass sie völlig Übereinkommens werden neu zu schreiben. Der Vorteil dieses Ansatzes liegt darin, dass die Klassen schlank sind und lösen Sie die Aufgabe. Der zweite Ansatz ist, um die Konfiguration Funktionalität zu halten, und schreiben Sie eine Schicht auf, dass der Konvent Funktionalität implementiert. Der Vorteil dieses Ansatzes ist, dass mehrere Übereinkommen Lösungen angewendet werden können, aber der Nachteil ist ein zusätzlicher Aufwand. Wir werden den zweiten Ansatz umzusetzen hier und halten Sie die Konfiguration und das Übereinkommen Schicht so schlank wie möglich. Idealerweise sollte die Konfiguration Schicht enthält nur die Funktionalität, die von der Konvention erforderlich. Zusätzliche Funktionalität in der Konfiguration fügt unnötige Gepäck. Die Basis Unit-Test-Datei, wenn in ein Übereinkommen Datei umgewandelt wird, die der folgenden ähnelt.

 Quelle: / website / ROOT / ajaxrecipes / javascript / conventionconfiguration.html  Convention over Configuration 

Der modifizierte Code besteht aus drei Prüfungen, aber beachten Sie die drastische Kürzung der Code in diesem Beispiel. Beachten Sie auch, dass bestimmte Code-Konstrukte werden implizite und brauchen nicht explizit geschrieben werden (z. B. testManager.success). Aus der Sicht der Nutzer ist die Verringerung und Vereinfachung des Codes für eine gute Sache, aber in der Tat gibt es viele versteckte Aspekte, brauchen Sie zu beachten, denn wenn etwas schief geht, Sie müssen wissen, warum es passiert ist. Die Einzelheiten, wie dieser Code implementiert wurde nicht in der Rezeptur sind sie in diesem Artikel diskutiert, aber die folgenden allgemeinen Konzepte umgesetzt werden behandelt:

• Der HTML-Code, dass die Schaltflächen enthalten ist dynamisch von einem strategisch platzierten Include-Datei (conventiontest.js) generiert. Die Datei wird dort platziert, wo es so ist, dass die Variablen werden bereits erklärt wurden und für die Initialisierung.

• Die testsToRun Variable ist eine stillschweigende-to-Variable existiert und ist für die zur Verfügung stehenden Tests überprüft. Für jeden Test-Methode wird eine Schaltfläche erstellt, in dem der Name der Taste ist der Name der Methode.

• Jede Methode wird ein Proxy zu kapseln und automatisch Fehler oder erfolgreichen Tests angemessen zu behandeln. Bei der Erstellung Ihrer eigenen Konvention-basierten Code, beachten Sie die folgenden Punkte:

Initialisierung: In-basierten Konfigurations-Code, sind Sie für die Initialisierung der Variablen und Objekten zuständig, in convention-basierten Code, der Code ist vor allem verantwortlich für die Initialisierung sich. Es ist wie das Starten eines Autos: Sie erwarten, das Auto zu Brennstoff für den Motor ernähren, und Sie wollen einfach nur den Schlüssel drehen und in der Lage sein zu fahren. Das Problem mit der Initialisierung ist, dass Sie nicht wissen, immer den Kontext.

• Sie haben zwei Möglichkeiten, um zu initialisieren. Die erste ist zu initialisieren und zu konfigurieren, wenn die JavaScript geladen ist, wie das XMLHttpRequest-Fabrik in Rezept 2-4 dargestellt. Die zweite besteht darin, zu initialisieren, wenn die erste Aktion stattfindet. Im zweiten Szenario wird eine Flagge für den Status der Initialisierung auf false gesetzt, wenn das JavaScript geladen wird. Dann, als die erste Aktion stattfindet, geschieht die Initialisierung.

Fehlerkontrolle: Übereinkommen Systeme nach bestimmten Variablen oder Typen erwarten, erklärt, und wenn sie nicht angegeben, so ergeben sich Probleme. Ein Abkommen System muss Fehlerroutinen, dass jeder Fehler abfangen und erläutern im Detail, was schiefgelaufen ist. Viele Entwickler könnte denken, dass ein Übereinkommen System anpassungsfähig sein sollte und nicht ganz umgehen richtigen Code. Dies ist ein großer Irrtum Bereitstellung Workarounds sorgt für eine schlampige Entwickler. Convention-basierten Code erfordert eine gute Code-Praxis, so dass jeder die gleichen Codes Konvention. Nehmen Sie keine Abkürzungen.

Naming Konsistenz: Wenn Sie Label Identifikatoren, Sie müssen konsequent zu sein. Der Name der Kennung muss so klar wie möglich sein. Versuchen Sie nicht, klug zu sein, Slick oder kryptisch. Ruby on Rails ist aus vielen Gründen erfolgreiche, von denen ist, dass die Namenskonventionen liegen auf der Hand, konsistent und intuitiv.

Ein Artikel eingereicht von Sonja Lande


Disclaimer:Unsere Website ist nicht verantwortlich für den Inhalt dieses Artikels. Webarticles ist eine kostenlose Informationsquelle.
Wichtig: Dieser Artikel "Coding Verwenden Kongresse und Nicht-Konfigurationen" wurde durch ein automatisches Software übersetzt. Wir fühlen uns leid für alle Rechtschreibfehler, die möglicherweise aufgetreten sind. Vielen Dank für Ihr Verständnis.


Online: 245 users browsing the articles directory