DRY - Don't repeat yourself

Boa tarde galera, desculpa ai pelo o tempo sem postar algo, final da minha especialização ai já viram né?, então, um principio básico da programação e que mesmo assim eu não conhecia e que independente do paradigma que utilize, é a filosofia do DRY(Don't repeat yourself), isso mesmo, não deixar alguma parte do seu código escrita igual em dois lugares ao mesmo tempo no seu código, porque quando começamos é bem mais fácil fazer um Ctrl+C e Ctrl+V, mas essa pequena dica assim apesar de já existir no princípio também do SOLID, é de grande ajuda, para exemplificar isso irei dar o meu próprio exemplo e que vocês irão entender a ideia.

Eu utilizava o biblioteca jquery e com isso vazia muito a mesma requisição, mesmo o método sendo muito pequeno como este:

 var urlPadrao = api.seusite.com/  
 $.ajax({  
    url: urlPadra + 'getParametros',  
    success: function(retorno){  
       console.log(retorno)  
    },  
    error: function(retorno){  
       ErroPadrao();  
    }  
 }  

e o segundo praticamente igual só que mudava somente a url.

 $.ajax({  
    url: urlPadra + 'getParametros2',  
    success: function(retorno){  
       console.log(retorno)  
    },  
    error: function(retorno){  
       ErroPadrao();  
    }  
 }  

Isso são só exemplos, mas tinha umas 10 ou 15 em lugares diferentes, ai tive que mudar o Header das requisições mudando  o content-type, o que aconteceu?, teria que mudar isso em todas as requisições adicionando ele, então resolvi fazer uma camada acima que é o que o principio do DRY propõe e criei um método genérico para as requisições.

 function ajaxRequest(url, type, data, callback) {  
   $.ajax({  
     url: url,  
     type: type,
     data: data,
     contentType: OQueVcQuiser,
     beforeSend: function() {  
       $("#loading").fadeIn();  
     },  
     complete: function() {  
       $("#loading").fadeOut();          
     },  
     success: function(result) {  
       if (callback.hasOwnProperty("success")) {  
         callback["success"](result);    
       }  
     },  
     error: function(request, status, error) {          
       if (callback.hasOwnProperty("error")) {  
         callback["error"](request);    
       }   
     }  
   });     
 }  

Agora simplificou para o ajaxRequest e quando precisar o contentType, muda em lugar só e pronto, podendo mudar posteriormente se precisar também, passar ele como parâmetro.

Por hoje é isso ai pessoal, espero ter ajudado ;)

Comentários

Postagens mais visitadas deste blog

Utilizando o Gulp para facilitar seu desenvolvimento front-end

Teclas de atalho(accesskey) no HTML5

Lazy load no Angular using Jquery