Utilizzo di convenzioni di codifica e non ConfigurazioniUtilizzo di convenzioni di codifica e non Configurazioni
Problema che si desidera rendere il vostro JavaScript costrutti più efficiente mediante l'applicazione del Rails "Convenzione sulla configurazione del" principio di loro. Teoria si può già avere familiarità con la piattaforma di programmazione Ruby on Rails, che viene utilizzato per creare applicazioni web. Il focus di questa ricetta non è Ruby on Rails, ma un aspetto di Ruby on Rails e cioè, da una convenzione sulla configurazione (vedi http://en.wikipedia.org/wiki/ Ruby_on_Rails per maggiori informazioni su questo). Immaginate di scrivere i test e rendersi conto che si utilizza uno stesso set di istruzioni più e più volte. Quando si converte il codice dal codice ripetuto in codice generico, si sta creando un quadro. Il quadro può essere creato in uno dei due modi. Il primo modo è quello di creare infrastrutture e filo insieme, e il secondo è quello di formulare ipotesi sul vostro codice. Consideri il seguente JavaScript prova JsUnit: testsToRun var = (/ / Start codice JavaScript per i casi di test qui testPlainVanilla: function () (/ / Some code testManager.success ();) / / End codice JavaScript per i casi di test); testManager.setTestCases (testsToRun); I dettagli di ciò che le variabili e le classi non sono rilevanti. Quello che è importante è il modo in cui sono collegati insieme. La variabile testsToRun contiene una serie di metodi che vengono utilizzati per eseguire test specifici. Quando ogni prova ha completato con successo, il metodo testManager.success viene chiamato. La variabile testsToRun non è associato con qualsiasi altro metodo, i dati membro, o una funzione in poche parole, testsToRun è appesa come una bandiera al vento. Naturalmente, non vogliamo testsToRun appendere al vento, vogliamo le prove da eseguito. I test vengono eseguiti dalla variabile testManager, e testManager non ha alcuna conoscenza di testsToRun. La sfida è riuscire a capire come fare testManager consapevole di testsToRun e, una volta che è a conoscenza, per eseguire le prove contenute. Il cablaggio di testManager a testsToRun può essere una convenzione o una configurazione. Nell'esempio precedente, la soluzione utilizzata per rendere testManager consapevole di testsToRun è Configurazione. In termini di programmazione classica, si può pensare di configurazione come un file su un disco rigido con pezzi di testo che vengono analizzati da un algoritmo. Tale processo è una configurazione, ma è solo un tipo di configurazione. Un altro tipo noto come programmatica di configurazione coinvolge il codice sorgente di raccontare le classi di come tutto sia collegati insieme. Non ho intenzione di coprire i vantaggi e gli svantaggi dei diversi tipi di configurazione è sufficiente dire che la configurazione è usato per legare together implementazioni sconosciuti per creare un sistema di lavoro. Configurazione è spesso utilizzato, perché è un modo semplice per creare un sistema di lavoro. La configurazione non necessita di un algoritmo di deduzione, anzi, ha solo bisogno di un algoritmo in grado di analizzare un file di configurazione o un programmatore che può legare implementazioni insieme. In poche parole, la configurazione richiede che il programmatore o l'amministratore di fare un po 'di sollevamento pesi di capire ciò che è collegato al pezzo l'altro pezzo. Se qualcosa non funziona, allora il sistema si può dire, "Oops, che non funziona. Try again. " Convenzione può sembrare un modo più complicato per creare un sistema di lavoro che è più arte che scienza. Per analogia, nel film Io, Robot, L'attore Will Smith gioca un poliziotto, Del Spooner, che non ama i robot. Durante la scena dell'interrogatorio robot, Spooner strizza l'occhio a un altro poliziotto di lasciare la stanza in discussione. Il robot chiede volere ciò che significava la strizzatina d'occhio, e Spooner spiega che l'occhio è una cosa che un essere umano sa. In un momento successivo nel film, il robot usa una strizzatina d'occhio per inviare aMessage a Spooner. Spooner è sorpreso, ma sa che cosa significa e agisce in modo appropriato. Quindi, come fa l'occhiolino si riferiscono alla Convenzione? A qualcuno che sa che cosa è la strizzatina d'occhio, si tratta di un semplice pezzo di informazione che ha molte implicazioni. A qualcuno che non sa che cosa è la strizzatina d'occhio, è respinto in quanto irrilevante. Una persona che respinge l'occhiolino manca un pezzo di informazioni di vitale importanza e potrebbe essere considerato al di fuori del ciclo della conoscenza. La strizzatina d'occhio rappresenta un pezzo complesso di informazioni che richiede un contesto per comprendere completamente. Una critica di Ruby on Rails è che è più arte che scienza, e quindi non logico, dato che utilizza Convenzione, in altre parole, è come sbattere le palpebre, e se non hai il contesto di capirlo, non fa senso. Vorrei fare fronte a questa configurazione utilizza convenzione, e quindi è una convenzione. Nel caso più semplice, la configurazione si spiega da sé, ma nel caso più complesso, un file di configurazione è una convenzione, tutti a sé stante. Per capire la configurazione, è necessario comprendere la convenzione della configurazione, che pone la questione, perché usare una configurazione? La risposta è che a volte una configurazione è la soluzione più appropriata in quanto offre flessibilità, Con la convenzione, è fare le cose secondo uno schema predeterminato globale. La configurazione ragione è diventato una convenzione è che in molti casi, gli sviluppatori pensano di aver bisogno di utilizzare la configurazione per ottenere la flessibilità, quando in convenzione infatti sarebbe stato abbastanza buono. Convenzione di applicazione non richiede utilizzando la riflessione, perché per prendere una decisione sulla base di convenzione, è necessario conoscere il contesto attuale. Il grande vantaggio di utilizzare convenzione è che non c'è bisogno di mantenere la configurazione ogni volta che si verifichino dei cambiamenti di una convenzione preleva automaticamente le ultime modifiche. I seguenti sono alcuni scenari in cui si usa convenzione sulla configurazione: • Quando avete bisogno di aggiornare costantemente e gestire cross-informazioni di riferimento (ad esempio, le colonne di database che sono mappati ai dati della classe). • Quando la configurazione è solo importante per uno sviluppatore e non un amministratore. Ad esempio, ci si aspetta un amministratore desidera configurare database che l'applicazione si connetterà al. Ma non ci si aspetta l'amministratore di configurare quale modello appartiene alla quale visualizzare e il controller in AMODEL-View-Controller (MVC) architettura. • Quando è possibile utilizzare la riflessione e chiamare i metodi in forma anonima, senza conoscere le informazioni sul tipo. È possibile applicare le convenzioni con linguaggi di programmazione come C # e Java, come sostegno alla riflessione, ma la capacità di chiamare i metodi anonimo è molto più complicato. Utilizzando linguaggi dinamici come Ruby e JavaScript, è molto facile per chiamare metodi o proprietà sui tipi. • Quando è necessario fornire agli utenti (e te stesso) con note se qualcosa va storto. Quando si utilizzano le convenzioni, è molto importante per indicare chiaramente ciò che è sbagliato quando qualcosa non funziona. Ruby on Rails fa un ottimo lavoro di fornire suggerimenti su cosa fare quando qualcosa va storto. Questa caratteristica è importante perché scrivere codice per un sistema che utilizza la convenzione funziona solo se si conosce la convenzione. Soluzione Per questa ricetta, ci convertire l'unità-quadro di prova descritto in precedenza in una convenzione, completamente basato su sistema. Poi, durante la scrittura di unit test, il nostro unico compito sarà quello di attuare una serie di test in una struttura, e l'unità-quadro test farà il resto. Per scopi illustrativi, diamo un'occhiata al modello di unit test di nuovo e di identificare i pezzi che devono essere convertiti da un approccio di configurazione di un approccio convenzione. Fonte: / jaxson / website / trunk / root / scripts / templates / testcontract.html
Le linee in grassetto nell'esempio precedente rappresentano la configurazione basati su codice che verrà convertito in convenzione a base di codice. Quando si passa dalla configurazione di base del codice di convenzione-base di codice, è possibile applicare uno dei due approcci. Il primo approccio è quello di riscrivere le classi utilizzate dalla centralina test quadro in modo che essi diventino completamente convenzione basata. Il vantaggio di questo approccio è che le classi sono magra e risolvere il compito. Il secondo approccio è quello di mantenere la funzionalità di configurazione, e scrivere a un livello superiore che implementa le funzionalità di convenzione. Il vantaggio di questo approccio è che le soluzioni convenzione multiple possono essere applicate, ma lo svantaggio è un overhead aggiuntivo. We'll attuare il secondo approccio qui, e mantenere sia la configurazione e strato di convenzione quanto più snella possibile. Idealmente, il livello di configurazione dovrebbe contenere solo la funzionalità necessaria dalla Convenzione. Funzionalità aggiuntive nella configurazione aggiunge bagagli inutili. L'unità di base-test file quando convertito in un file di convenzione è simile a quanto segue. Fonte: / website / ROOT / ajaxrecipes / javascript / conventionconfiguration.html Il codice modificato comprende tre prove, a meno di notare la drastica riduzione nel codice in questo esempio. Inoltre notare che il codice di alcuni costrutti sono implicite e non devono essere scritte in modo esplicito (ad esempio, testManager.success). Dal punto di vista dell'utente, la riduzione e la semplificazione del codice è una buona cosa, ma in realtà ci sono molti aspetti nascosti che devi essere al corrente, perché quando qualcosa va storto, hai bisogno di sapere perché è successo. La dettagli di come questo codice è stato implementato, non sono contemplati nella ricetta sono discussi in questo articolo, ma i seguenti concetti generali sono implementati: • Il codice HTML che contiene i pulsanti viene generata dinamicamente da una posizione strategica include file (conventiontest.js). Il file si trova in cui è così che le variabili saranno già stati dichiarati disponibili e per l'inizializzazione. • La variabile testsToRun è una implicita-to-esistere variabile e viene ispezionato per le prove a disposizione. Per ogni metodo di prova, un tasto viene generato, dove il nome del pulsante è il nome del metodo di prova. • Ogni metodo usa un proxy per incapsulare e gestire automaticamente gli errori o le prove di successo in modo appropriato. Quando crei la tua convention proprio codice in base, tenere a mente i seguenti punti: • Inizializzazione: Nella configurazione basato su codice, l'utente è responsabile per l'inizializzazione delle variabili e gli oggetti, in convenzione a base di codice, il codice è principalmente responsabile per l'inizializzazione di sé. E 'come iniziare un auto: ci si aspetta la macchina di alimentazione del carburante al motore, e volete semplicemente girare la chiave ed essere in grado di guidare. Il problema con l'inizializzazione è che non sempre conoscono bene il contesto. • Ci sono due modi per inizializzare. Il primo è quello di inizializzare e configurare quando il codice JavaScript viene caricato, come illustrato dalla fabbrica XMLHttpRequest in Ricetta 2-4. Il secondo è quello di inizializzare quando la prima azione si svolge. Nel secondo scenario, un flag che indica lo stato di inizializzazione è impostato su false quando il codice JavaScript viene caricato. Poi, come la prima azione si svolge, l'inizializzazione avviene. • Error Checking: Sistemi di convenzione si aspettano alcune variabili o tipi dichiarati, e se non sono dichiarati, sorgono problemi. Un sistema di convenzione deve essere procedure di errore che cattura ogni errore e di spiegare in dettaglio cosa è andato storto. Molti sviluppatori potrebbe pensare che un sistema di convenzione deve essere adattabile e lavoro non tutto il codice del tutto corretto. Questo è un grande equivoco che fornisce soluzioni per la rende uno sviluppatore sciatta. Convenzione a base di codice richiede buone pratiche di codifica, in modo che tutti i codici della stessa convenzione. Non prendere scorciatoie. • Naming coerenza: Ogni volta che l'etichetta di identificazione, è necessario essere coerenti. Il nome del identificatore deve essere il più chiaro possibile. Non cercare di essere intelligente, liscia, o criptico. Ruby on Rails è successo per molte ragioni, una delle quali è che le convenzioni di denominazione sono evidenti, coerenti, e intuitivo. un articolo presentato da Sonja Lande Disclaimer:Il nostro sito non è responsabile per il contenuto di questo articolo. Webarticles è una risorsa gratuita di informazioni. Importante: Questo articolo "Utilizzo di convenzioni di codifica e non configurazioni" è stato tradotto da un software automatico. Ci dispiace per eventuali errori di ortografia che possono essersi verificati. Grazie per la vostra comprensione.
|
|||||||||||||||
| Online: 245 users browsing the articles directory |
|
|