Login



Artigos - Detalhes

Titulo: Programação Defensiva

Descricao: Entenda mehor o que você "deveria" ter feito

______________________________________________________________________________________________

Esta é uma técnica que vai te poupar muito trabalho quando o teu software for para a área de testes ou homologação. Considere programação defensiva o desenvolvedor que se cerca de todas as possiblidades que podem ocorrer em uma determinada funcionalidade e anula (programaticamente) todas as outras possibilidades. A vantagem de se usar esta técnica é que você pode garantir que o seu sistema executou exatamente o que ele deveria ter feito e minimiza os desvios inesperados.

Por exemplo, imagine que devemos implementar uma lógica que receba três alunos o primeiro deles é o da esquerda, o segundo fica ao centro, e o último é o da direita. Dentro desta lógica o aluno do centro deve retransmitir mensagens entre os dois alunos da ponta. O primeiro passo da lógica é saber quem falou e quem vai escutar. Uma verificação dá conta do resultado:



Isto é o suficiente para que nossa lógica funcione. Porém não houve qualquer atitude defensiva para garantir que a mensagem foi retransmitida.

E se o aluno da esquerda solicita-se ao aluno do meio transmitir uma mensagem mas não diz qual é a mensagem! Então o aluno do meio iria chamar o aluno da direita e sem saber o que fazer ele iri ficar um tanto quanto confuso. Parece meio ridículo, mas é o que acontece quando desenvolvemos software. Sistemas apresentam comportamentos estranhos por que a sua lógica, por mais correta que esteja, não levou em considerações as possíveis anormalidades que podem vir a ocorrer. É comum que um sistema execute uma tarefa e a tela simplesmente pisque sem nenhum tipo de informação, o usuário fica confuso por que não sabe se aconteceu o que ele queria ou se deu algum erro. Para resolver este problema ,teríamos que refazer nossa lógica com alguma coisa parecida com o trecho abaixo:



Agora sim estamos nos precavendo que o sistema tem "consciência" do que esta acontecendo. Mas só isso não basta, se o aluno da esquerda não esta presente, precisamos alertar ao aluno da direita que ele não esta disponível no momento. Em Java isto seria feita com uma exceção (exceções representam desvios do comportamento esperado).

A primeira desvantagem desta técnica é que quant mais neorótico for o programador mais precauções ele irá tomar e com isso ele estará aumentando a dificuldade de manutenção e compreensão do trecho de código escrito. Portanto é importante saber dosar e atacar as possibilidades mais coesas com a necessidade.





<<< Voltar