Convenções de codificação usando e não ConfigurationsConvenções de codificação usando e não Configurations
Problema Você quer fazer o seu JavaScript construções mais eficientes através da aplicação do Rails "convenção sobre configuração" princípio para eles. Teoria, você pode já estar familiarizado com a plataforma de programação Ruby on Rails, que é usado para construir aplicações web. O foco desta receita não é Ruby on Rails, mas um aspecto de Ruby on Rails ou seja, a Convenção sobre configuração (ver http://en.wikipedia.org/wiki/ Ruby_on_Rails para saber mais sobre isso). Imagine a escrever testes e percebendo que você usar um mesmo conjunto de instruções repetidamente. Quando você converter o código do código repetido em um código genérico, você está criando um quadro. O quadro pode ser criado em uma das duas maneiras. A primeira maneira é criar infra-estrutura e conectá-lo juntos, eo segundo é fazer suposições sobre o seu código. Considere o seguinte JavaScript teste JsUnit: testsToRun var = (/ / Start código JavaScript para casos de teste aqui testPlainVanilla: function () (/ / Algum código testManager.success ();) / / Fim de código JavaScript para casos de teste); testManager.setTestCases testsToRun (); Os detalhes do que as variáveis e as classes não são relevantes. O que é relevante é a forma como eles estão ligados entre si. A variável testsToRun contém uma série de métodos que são usados para executar testes específicos. Quando cada teste foi concluído com êxito, o método é chamado testManager.success. A variável testsToRun não está associado com qualquer outro método, dados membro, ou a função basta colocar, testsToRun está pendurada como uma bandeira ao vento. Naturalmente, nós não queremos testsToRun para pendurar no vento, nós queremos que os testes a serem executado. Os testes são executados pela variável TestManager e TestManager não tem conhecimento de testsToRun. O desafio é descobrir como fazer TestManager ciente de testsToRun e, uma vez que está consciente, para executar os testes contidos. A fiação de TestManager para testsToRun pode ser uma convenção ou uma configuração. No exemplo anterior, a solução usada para fazer TestManager ciente de testsToRun é configuração. Em termos de programação clássica, você pode pensar de configuração como sendo um arquivo em um disco rígido com pedaços de texto que são analisadas por um algoritmo. Esse processo é uma configuração, mas é apenas um tipo de configuração. Outro tipo conhecido como configuração programática envolve o código-fonte das classes dizer como tudo é ligado junto. Eu não estou indo para cobrir as vantagens e desvantagens dos diferentes tipos de configuração basta dizer que a configuração é utilizado para unir as implementações desconhecido para criar um sistema de trabalho. Configuração é usada frequentemente porque é uma maneira fácil de criar um sistema de trabalho. Configuração não exige um algoritmo de dedução, mas sim só precisa de um algoritmo que pode analisar um arquivo de configuração ou um programador que pode arame implementações juntos. Em poucas palavras, a configuração requer que o programador ou administrador de fazer alguma parte do trabalho pesado de descobrir que parte está ligada à outra parte. Se algo não funcionar, então o sistema pode dizer: "Opa, que não funciona. Tente novamente. " Convenção pode parecer ser um caminho mais complicado para criar um sistema de trabalho que é mais arte do que ciência. Como uma analogia, no filme I, Robot, O ator Will Smith interpreta um policial, Del Spooner, que não gosta de robôs. Durante a cena do interrogatório do robô, winks Spooner em outro policial sair da sala de interrogatório. O robô vai perguntar o que significava a wink, Spooner e explica que o pisca é algo que um ser humano sabe. Em um ponto mais tarde no filme, o robô utiliza para enviar uma piscadela para AMessage Spooner. Spooner é surpreendido, mas ele sabe o que isso significa e age de forma adequada. Então como é que a piscadela dizem respeito à convenção? Para alguém que sabe o que é o Wink, é uma peça única e simples de informação que tem muitas implicações. Para alguém que não sabe o que é o Wink, é descartado como irrelevante. Uma pessoa que rejeita a piscadela está faltando um pedaço de informação vital e pode ser considerada fora do circuito do conhecimento. O Wink representa uma parte complicada de informação que requer um contexto para entender completamente. Uma crítica do Ruby on Rails é que é mais arte do que ciência e, portanto, não lógico, uma vez que utiliza convenções em outras palavras, é como o Wink, e se você não tem o contexto para entender, não faz sentido. Gostaria de fazer face a essa configuração usa convenção e, portanto, é uma convenção. No caso mais simples, a configuração é auto-explicativo, mas, no caso mais complexo, um arquivo de configuração é uma convenção de todos por conta própria. Para entender a configuração, você precisa entender a convenção da configuração, o que levanta a questão, por que usar uma configuração? A resposta é que, por vezes, uma configuração é a solução adequada, pois oferece flexibilidade; Com a convenção, você faz as coisas de acordo com um esquema pré-determinado. A configuração razão tornou-se uma convenção é que em muitos casos, os desenvolvedores acham que precisam usar a configuração para ganho de flexibilidade, quando, na convenção de fato teria sido bom o suficiente. Convenção de Aplicação não requerem o uso de reflexão, porque, para tomar uma decisão com base na convenção, você precisa conhecer o contexto atual. A grande vantagem do uso de convenção é que você não precisa para manter a configuração sempre que ocorrerem alterações de uma convenção automaticamente pega as últimas alterações. A seguir, alguns cenários em que você usaria convenção sobre configuração: • Quando você precisa constantemente atualizar e gerenciar informações de referência cruzada (por exemplo, as colunas de dados que são mapeados para membros de dados de classe). • Quando a configuração é apenas de importância para um desenvolvedor e não um administrador. Por exemplo, você esperaria que um administrador deseja configurar banco de dados que sua aplicação vai se conectar. Mas você não esperaria que o administrador para configurar qual o modelo que pertence à vista e qual o controlador de AMODEL-View-Controller (MVC). • Quando você pode usar o reflexo e os métodos de chamada anónima, sem saber o tipo de informação. É possível aplicar as convenções utilizando linguagens de programação como C # e Java, como suporte a reflexão, mas a possibilidade de chamar métodos anonimamente é muito mais complicado. Usando linguagens dinâmicas, como JavaScript e Ruby, é muito fácil para chamar métodos ou propriedades em tipos. • Quando você precisa fornecer seus usuários (e mesmo) com dicas, se algo der errado. Quando você usa convenções, que é muito importante para indicar claramente o que está errado quando algo não funciona. Ruby on Rails faz um trabalho muito bom de dar dicas sobre o que fazer quando algo dá errado. Esta característica é importante porque o código escrito para um sistema que usa a convenção só funciona se você souber a convenção Solução. Para esta receita, vamos converter a unidade-estrutura de testes descritos anteriormente em uma convenção totalmente baseados no sistema. Então, ao escrever testes de unidade, a nossa única tarefa será a de implementar uma série de testes em uma estrutura, e da unidade-estrutura de testes fará o resto. Para fins de ilustração, vamos olhar para o modelo da unidade de teste de novo e identificar as peças que precisam ser convertidos de uma abordagem de configuração para uma abordagem de convenções. Fonte: / Jaxson / trunk site / / root / scripts / templates / testcontract.html
As linhas em negrito no exemplo anterior representam a configuração baseada em código que será convertida em convenção baseada em código. Ao converter de configuração baseado em código-base a convenção de código, você pode aplicar uma das duas abordagens. A primeira abordagem é reescrever as classes usadas pela unidade da estrutura de testes para que eles se tornam convenções totalmente baseado. A vantagem dessa abordagem é que as aulas são magros e resolver a tarefa. A segunda abordagem é a de manter a funcionalidade de configuração, e escrever uma camada em cima que implementa a funcionalidade de convenções. A vantagem dessa abordagem é que as soluções convenção múltiplo pode ser aplicada, mas a desvantagem é uma sobrecarga adicional. Nós vamos implementar a abordagem segundo aqui, e manter a configuração e os camada convenção tão magro quanto possível. Idealmente, a camada de configuração deve conter apenas as funcionalidades necessárias para que a convenção. A funcionalidade adicional na configuração adiciona bagagem desnecessária. A unidade de base de testes de arquivo quando convertido em um arquivo de convenções é semelhante à que se segue. Fonte: / website / ROOT / ajaxrecipes / javascript / conventionconfiguration.html O código modificado inclui três testes, mas observar a redução drástica no código neste exemplo. Notar também que o código certas construções estão implícitas e não precisa ser escrito explicitamente (por exemplo, testManager.success). Do ponto de vista do usuário, a redução e simplificação do código é uma coisa boa, mas na verdade existem muitos aspectos ocultos que você precisará estar ciente, porque quando algo dá errado, você precisa saber por que aconteceu. detalhes de como esse código foi implementado não são abrangidos na receita são discutidos ao longo deste artigo, mas os seguintes conceitos gerais são implementadas: • O código em HTML que continha os botões é gerado dinamicamente por um estrategicamente colocadas arquivo de inclusão (conventiontest.js). O arquivo está colocado onde é assim que as variáveis já terão sido declaradas e disponíveis para a inicialização. • A variável testsToRun é um implícita-a-existência variável e é inspecionado disponível para testes. Para cada método de ensaio, um botão é gerado, onde o nome do botão é o nome do método de ensaio. • Cada método usa um proxy para sintetizar e tratar automaticamente erros ou testes bem sucedidos de forma adequada. Ao criar sua própria convenção de código-base, tenha em mente os seguintes pontos: • Inicialização: A configuração baseada em código, você é responsável pela inicialização das variáveis e objetos; baseado na convenção de código, o código é em grande parte responsável por inicializar próprio. É como começar um carro: você espera do carro para alimentação de combustível ao motor, e você só quer virar a chave e ser capaz de conduzir. O problema com a inicialização é que você não sabe sempre o contexto. • Você tem duas maneiras de inicializar. O primeiro é para inicializar e configurar quando o JavaScript é carregado, como ilustrado pela fábrica XMLHttpRequest na receita 2-4. A segunda é para inicializar quando a primeira ação ocorre. No segundo cenário, um sinal indicando o status de inicialização está definido para false quando o JavaScript é carregado. Então, como primeira ação ocorre, a inicialização acontece. • A verificação de erros: Sistemas Convenção esperar determinadas variáveis ou tipos declarados, e se eles não são declarados, os problemas surgem. Um sistema de convenção deve ter rotinas de erro que captura todos os erros e explicar em detalhes o que deu errado. Muitos desenvolvedores podem pensar que um sistema de convenção deve ser adaptável e trabalho não volta totalmente correta do código. Este é um grande equívoco fornecendo soluções faz para um desenvolvedor desleixado. Convenção de código baseado exige boas práticas de codificação, de modo que todos os códigos para a mesma convenção. Não tome atalhos. • Naming consistência: Sempre que você rótulo identificadores, você precisa ser consistente. O nome do identificador deve ser tão óbvia quanto possível. Não tente ser inteligente, habilidoso, ou críptica. Ruby on Rails é bem sucedido por muitas razões, uma das quais é que as convenções de nomenclatura são óbvias, consistente e intuitiva. um artigo submetido por Sonja Lande Isenção de responsabilidade:O nosso site não se responsabiliza pelo conteúdo deste artigo. Webarticles é uma fonte de informação livre. Importante: Este artigo "Codificação de Convenções de Utilização e configurações não" foi traduzida por um software automático. Nós sentimos muito por quaisquer erros de ortografia que pode ter ocorrido. Obrigado pela sua compreensão.
|
|||||||||||||||
| Online: 245 users browsing the articles directory |
|
|