Was this page helpful?

DRY

    Conteúdo
    1. 1. Nesting
        1. 1.1.1. ERB
        2. 1.1.2. Haml
    2. 2. Referências

    Dry é a sigla para o termo "Dont repeat yourself" (Nao repita a si mesmo), sendo uma filosofia de um processo que visa a nao repetição de código, particularmente utilizado em computação. Essa filosofia enfatiza que informação nao deve ser duplicada, porque duplicação aumenta dificuldades nas mudanças, pode diminuir a clareza, e leva a oportunidades de um codigo nao coeso.

     

    Coesao: O termo coesao nos parece simples, porem o efeito de sua ausencia provoca bastante dor-de-cabeça. Coesão representa o quão uma classe é específica para desempenhar um papel em um contexto.  Porem  um projeto coeso nao significa que os codigos de suas classes nao serão reutilizáveis . (Lembrando que coesão é diferente de acoplamento. Acoplamento é o nível de interligação entre duas classes, ou seja, o quanto uma classe conhece da outra. A repetição de código corre o risco do sistema ter um acoplamento maior, pois a reutilização de um mesmo código em diferentes classes faz com que uma classe conheça a outra, porém um acoplamento forte usado com cuidado é essencial, pois se todo acoplamento fosse evitado, não haveria métodos sobrepostos, não haveria herança e com isso não haveria orientação a objetos.)

     

    Reutilização: Ao criar código reutilizável estamos facilitando nossa vida no longo prazo. Se uma alteração importante é necessária para aumentar a segurança de seu sistema de autenticação, será muito mais fácil realizá-la se você estiver usando uma biblioteca única para este fim em todos os seus projetos. Mas imagine o trabalho que terá se cada projeto em sua empresa utilizar um sistema único de autenticação criado especialmente para ele.

     

    DRY em RAILS:

    Em Rails existem varias ferramentas para tornar o código mais coeso e reutilizável ao mesmo tempo, consequentemente tornando-o "mais DRY":

     SASS: Sass é uma meta linguagem implementada em cima de CSS com que é usada para descrever o style de um documento de maneira limpa e estrutural. Resumindo faz com que o texto em CSS seja escrito de maneira mais simples e elegante. O ponto de SASS mais importante para este artigo está no Nesting, veja abaixo:

    Nesting

    Sass evita repetições através dos seletores Nesting dentro uns dos outros. The same thing works with properties.

    // Sass
    
    table.hl
      margin: 2em 0
      td.ln
        text-align: right
    
    li
      font:
        family: serif
        weight: bold
        size: 1.2em
    
    /* CSS */
    
    table.hl {
      margin: 2em 0;
    }
    table.hl td.ln {
      text-align: right;
    }
    
    li {
      font-family: serif;
      font-weight: bold;
      font-size: 1.2em;
    }
    

     

    Outro exemplo está nesse simples código em Haml, uma ferramenta que facilita os scripts em ERB:

     

    ERB

    <div id='content'>
    <div class='left column'>
    <h2>Welcome to our site!</h2>
    <p><%= print_information %></p>
    </div>
    <div class="right column">
    <%= render :partial => "sidebar" %>
    </div>
    </div>

    Haml

    #content
    .left.column
    %h2 Welcome to our site!
    %p= print_information
    .right.column
    = render :partial => "sidebar"

     

    Porém não só de não repetição de código fonte vive o DRY, temos também a não repetição de atividades feitas pelo próprio usuário, como o próprio nome diz: " Não repita  as si mesmo". Esse é o exemplo do Capistrano.

     

    Capistrano:  Capistrano é uma ferramenta que executa códigos paralelos em  servidores alvo. Um bom caso da utilização de Capistrano é o caso de pessoas ocupadas, que compartilham uma mesma maquina com outros pessoas. Com Capistrano não precisa logar e deslogar toda vez, pois sua maior função é automatizar tarefas. Ex, com o comando `cap deploy` ele conecta no  servidor, baixa a ultima versao do repositório, cria e symlinka diretorios, reinicia os servidores.

     

     Partials: Uma das partes mais interessantes disponnivel em ruby, seguindo a filosofia Dry eh o partials. Partials são pedaços de página que podem ser reutilizados pra evitar replicação de código. Abaixo tem-se um exemplo de utilizacao de partials na view de um index, encontrado em um scaffold:

     

    1.   
    2.   
    3. <% for reading in @readings %>  
    4. <tr>  
    5. <td><%=h reading.url %></td>  
    6. <td><%=h reading.text %></td>  
    7. <td><%=h reading.page %></td>  
    8. <td><%=h reading.time %></td>  
    9. <td><%= link_to ‘Show’, reading %></td>  
    10. <td><%= link_to ‘Edit’, edit_reading_path(reading) %></td>  
    11. <td><%= link_to ‘Destroy’, reading, :confirm => ‘Are you sure?’, :method => :delete %></td>  
    12. </tr>  
    13. <% end %> 

     

    Eu gostaria de reutilizar o trecho que está exibindo cada “reading”, então, eu vou retirar e colocar este trecho de código em uma Partial, assim eu posso chamá-la em qualquer outro lugar da minha aplicação, onde eu queira exibir as informações da mesma maneira.

    Uma partial é um arquivo que começa com um “_”, underscore, underline…., criando um arquivo com o nome _readinhg.html  pegando todo o código que estava dentro  for. Este será o conteúdo da partial:
    #_reading.html.erb

    1. <tr>  
    2. <td><%=h reading.url %></td>  
    3. <td><%=h reading.text %></td>  
    4. <td><%=h reading.page %></td>  
    5. <td><%=h reading.time %></td>  
    6. <td><%= link_to ‘Show’, reading %></td>  
    7. <td><%= link_to ‘Edit’, edit_reading_path(reading) %></td>  
    8. <td><%= link_to ‘Destroy’, reading, :confirm => ‘Are you sure?’, :method => :delete %></td>  
    9. </tr>  

     

    OK! Agora que temos um partial com o nome _reading, basta agora lincarmos esse partials com a classe index.

     

    1.   
    2.   
    3. <%= render :partial => 'reading':collection => @readings%>  

    A partial receberá a collection “readings” como parâmetro.

     

     [2]http://railsgirl.wordpress.com/2008/...digo-no-rails/

    Was this page helpful?
    Marcadores (Editar marcadores)
    • No tags
    Páginas com link aqui
    Estatísticas da página
    5535 view(s), 16 edit(s) and 9362 character(s)

    Comentários

    Faça o login para escrever um comentário.

    Anexar arquivo

    Anexos