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

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

Protegendo a Navegação das Crianças

A internet nos ajuda muito no dia a dia, mas também pode ter conteúdos que não são adequados para crianças. Para proteger nossos pequenos enquanto navegam online, é importante usar ferramentas que filtrem e bloqueiem esses conteúdos. Uma ótima solução é configurar servidores DNS family-friendly, como os oferecidos pela Cloudflare. Neste post, você aprenderá passo a passo como configurar esses servidores DNS em dispositivos Android e iOS, garantindo um ambiente virtual seguro para suas crianças. Entendendo um pouco o conceito! O serviço Cloudflare Family visa oferecer uma experiência de navegação mais segura e protegida para as famílias, bloqueando sites com conteúdo adulto e malicioso. Ele foi projetado para proteger dispositivos e redes domésticas, ajudando a garantir que crianças e outros membros da família não acessem conteúdo inadequado ou perigoso enquanto navegam na internet. Assim como os servidores DNS padrão da Cloudflare, os servidores 1.1.1.3 e 1.0.0.3 oferecem uma navegação