Se você tivesse que escolher suas técnicas (inteligentes) favoritas para codificação defensiva, quais seriam? Embora minhas linguagens atuais sejam Java e Objective-C (com experiência em C ++), sinta-se à vontade para responder em qualquer idioma. A ênfase aqui seria em técnicas defensivas inteligentes que não sejam aquelas que mais de 70% de nós aqui já conhecem. Então agora é hora de cavar fundo na sua mochila de truques.
Em outras palavras, tente pensar em outro exemplo que não seja interessante :
if(5 == x)
em vez deif(x == 5)
: para evitar tarefas não intencionais
Aqui estão alguns exemplos de algumas das melhores práticas de programação defensiva intrigantes (exemplos específicos de linguagem estão em Java):
- Bloqueie suas variáveis até saber que precisa alterá-las
Ou seja, você pode declarar todas as variáveis final
até saber que precisará alterá-las, e nesse ponto poderá remover o final
. Um fato geralmente desconhecido é que isso também é válido para parâmetros de método:
public void foo(final int arg) { /* Stuff Here */ }
- Quando algo ruim acontecer, deixe um rastro de evidências para trás
Há várias coisas que você pode fazer quando há uma exceção: obviamente, registrando-a e realizando alguma limpeza, seriam algumas. Mas você também pode deixar um rastro de evidência (por exemplo, definir variáveis para valores sentinela como "UNABLE TO LOAD FILE" ou 99999 seria útil no depurador, caso você tenha passado por um catch
bloco de exceção ).
- Quando se trata de consistência: o diabo está nos detalhes
Seja o mais consistente com as outras bibliotecas que você está usando. Por exemplo, em Java, se você estiver criando um método que extrai um intervalo de valores, torne o limite inferior inclusivo e o limite superior exclusivo . Isso o tornará consistente com métodos como o String.substring(start, end)
que opera da mesma maneira. Você encontrará todos esses tipos de métodos no Sun JDK se comportando dessa maneira, uma vez que realiza várias operações, incluindo a iteração de elementos consistentes com as matrizes, onde os índices variam de Zero ( inclusive ) até o comprimento da matriz ( exclusivo ).
Então, quais são suas práticas defensivas favoritas?
Atualização: Se você ainda não o fez, sinta-se à vontade para entrar em contato. Estou dando a chance de mais respostas antes de escolher a resposta oficial .