Pular para o conteúdo principal

Programação Defensiva


O que é programação Defensiva?

Esse tipo de programação é um particular de uma única linguagem?

Será que meu código ficará mais difícil de fazer ou até mesmo difícil de ler? 

            
Bem, essas são as perguntas que irei responder para todos vocês que tem interesse em aprender um pouco mais sobre o que é programação defensiva e como tornar essa prática comum no nosso dia a dia de trabalho.

O que é programação defensiva?

O conceito dessa prática é bem similar a prática de direção defensiva, claro que nem todos os leitores desse artigo sabem dirigir, porém com certeza já ouviu falar que um motorista dirige pensando em si e nos demais ao seu redor. Agora por que isso é assim? Por que na prática um erro de um motorista ao seu redor ocasionará o seu erro, falando em palavras simples, um motorista aplicando o conceito de direção defensiva, ele sempre dirige pensando em evitar ou reduzir os efeitos da Lei Murphy, onde tentaremos evitar que aquele erro aconteça, prevenindo o erro com atitudes pré-pensadas. O conceito em si da programação defensiva gera em torno desse mesmo pensamento, basicamente é um conjunto de técnicas de projeto e programação objetivando a estabilidade e a segurança de um software independentemente de seu imprevisível. Tornando assim o seu código um vidente do que pode ser escrito depois por outro programador por exemplo.

Claro que não abordarei todas as aplicações da programação defensiva, pois esse conceito aborda uma ampla gama de assuntos voltados a segurança da informação. Minha intenção aqui é mostrar como esse conceito pode ser aplicado também de forma simples em seu código, evitando erros comuns que podem ocasionar retrabalho para você mesmo ou para infelizmente outras pessoas que forem dar manutenção no seu código.

Esse tipo de programação é um particular de uma única linguagem?

            
Como já percebemos no conceito, programação defensiva pode e deve ser utilizada em qualquer linguagem, prever o que pode acontecer antes de codificar é uma boa prática de programação e com certeza vai evitar muitos problemas no futuro. Ao dar manutenção em código sendo ele em qualquer linguagem, é comum encontrar brechas que por mais simples que sejam podem gerar situações desagradáveis.

            Por esse motivo, é sempre válido ter desconfiança com relação ao seu código, para prevenir o que possa vir a dar errado. Basicamente, essa técnica consiste em assumir um maior controle sobre a execução do código, incluindo um maior número de verificações no mesmo.


Será que meu código ficará mais difícil de fazer ou até mesmo difícil de ler?

Muito pelo contrário, seu código ficará, mas limpo e muito mais seguro, como você tem certeza? Bem, vamos pensar em uma fábrica de software, em uma fábrica é comum você pegar uma determinada demanda codificar e entregar em menos de 24 horas. Como você normalmente sempre trabalha em equipe, seu código pode passar por todos da sua equipe a fim de fazer uma melhoria solicitada ou até mesmo uma correção. Se você não tratar o seu código prevendo que o seu colega de equipe fará uma besteira, com certeza o seu colega irá escrever um trecho de código que mais tarde irá apresentar problema. Por exemplo:

Imagine que você precisa mandar um atributo a fim de usá-lo como filtro na sua consulta, caso esse atributo seja um objeto com vários atributos internos que foi preenchido na camada VIEW, antes de utilizá-lo na sua consulta você deve sempre verificar se aquele objeto está nulo e aí sim tentar acessar os seus atributos. 


EX: Considerem a classe Filtro descrita abaixo





Agora considerem o método tentando acessar de forma errada o atributo da classe Filtro.




Observem, certamente o desenvolvedor fez dessa forma por que por alguma hipótese ele achou que o objeto Filtro estaria sempre instanciado ou preenchido, porém vamos considerar que o objeto está nulo, e aí? Com certeza irá estourar erro, nesse caso, a forma correta de pensar quando estiver programando é que o objeto também pode vir nulo. Sendo assim a forma correta de prever o erro seria como descrito abaixo.

Ex:



Verificar se objeto está nulo antes de trabalhar com ele é sempre importante, nunca caiam na besteira de não verificar porque o objeto sempre irá vir instanciado, o objeto sempre pode vir nulo também.

Como podem ver no exemplo, o código não ficou complicado só porque verificamos se o objeto está nulo, mas com certeza ficou muito mais seguro de se trabalhar. Portanto podemos concluir que é sempre válido pensar nos erros antes de codificar e assim ter a certeza que seu código está seguro.




Conclusão

Vamos codificar com segurança, afinal o foco pode até ser a entrega, mas só a entrega com qualidade gera o verdadeiro lucro.



REFERÊNCIAS


PHP Sob Ataque- Técnicas de Programação Defensiva- disponível em ; http://www.phpit.com.br/artigos/php-sob-ataque-tecnicas-de-programacao-defensiva-video-e-slides.phpit;. Acessado em 12 de março de 2017.

Coleman, Derek et al-  Desenvolvimento Orientado a Objetos o Método Fusion; Editora Campus


Comentários

Postagens mais visitadas deste blog

Como Ofuscar o Seu Código Java?

Para ofuscar e proteger seu código Java, você pode usar uma ferramenta de ofuscação. A ofuscação torna o código-fonte mais difícil de entender e reverso-engenharia, mas ainda funcionando da mesma maneira. Ppara ofuscar seu código Java usando a ferramenta popular ProGuard, s iga os passos a seguir : Baixe o ProGuard: Faça o download do ProGuard no site oficial: https://www.guardsquare.com/en/products/proguard. Descompacte o arquivo: Depois de baixar o ProGuard, descompacte o arquivo em uma pasta de sua escolha. Configure o ProGuard: Crie um arquivo de configuração chamado proguard.conf. Nele, você deve especificar os detalhes do projeto, como arquivos JAR de entrada e saída, bibliotecas e opções de ofuscação. Por exemplo: -injars       input.jar -outjars      output.jar -libraryjars  /caminho/para/jdk/jre/lib/rt.jar -printmapping mapping.txt -dontoptimize -dontshrink -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -dontskipnonpublicli...

O que é Transpilação ?

A transpilação é, essencialmente, uma tradução especializada do processo de compilação. O procedimento é realizado de forma semelhante ao que um compilador faz, porém com uma diferença notável: enquanto um compilador tradicional tem como alvo um código de baixo nível, como Assembly ou código de máquina, o transpilador tem como objetivo um código-fonte em uma linguagem diferente ou a mesma linguagem escrita de outra maneira. Linguagens como CoffeeScript, TypeScript e o próprio JavaScript usam a transpilação para garantir compatibilidade entre versões. Há também outras linguagens que geram código-fonte em C em vez de código de baixo nível. Dessa forma, é possível programar em ES6 sem preocupações, mesmo que você queira oferecer suporte a navegadores antigos com versões mais antigas da especificação EcmaScript. Basta realizar a transpilação do ES6 para uma versão anterior e o código poderá ser executado em qualquer lugar. Isso se torna ainda mais fácil, já que muitas das novidades do Java...
EAAS – TUDO COMO SERVIÇO:  MUDANÇAS E TENDENCIAS DO TIC NAS EMPRESAS   Por Thiago Neri e  Italo Schramm Resumo   Este   artigo aborda os conceitos de   Cloud   Computing , especificamente a tipologia   EaaS , voltado para empresas que a utilizam, para aquelas   que   querem e   estão em processos de mudança de plataforma. Foram pesquisados os dados de migração das empresas para essa plataforma, bem como temas de segurança e disponibilidade dela no nosso país, com o objetivo de entender o porquê das empresas buscarem   esse serviço e as suas tendências.    Palavras-chave :   Cloud   Computing .   EaaS .   Plataforma.      Introdução   Apesar dos conceitos serem antigos,   o   Cloud   Computing   ainda é muito recente, podemos dizer que estamos no início de tudo   e sua história ainda está sendo escrita. O que eram ideias e ...