Si tuviera que elegir sus técnicas favoritas (inteligentes) para la codificación defensiva, ¿cuáles serían? Aunque mis lenguajes actuales son Java y Objective-C (con experiencia en C ++), no dude en responder en cualquier lenguaje. El énfasis aquí estaría en técnicas defensivas inteligentes distintas de las que ya conocemos más del 70% de nosotros. Así que ahora es el momento de profundizar en su bolsa de trucos.
En otras palabras, trate de pensar en algo más que este ejemplo poco interesante :
if(5 == x)en lugar deif(x == 5): para evitar asignaciones no intencionadas
Estos son algunos ejemplos de algunas mejores prácticas de programación defensiva intrigantes (ejemplos específicos del lenguaje están en Java):
- Bloquee sus variables hasta que sepa que necesita cambiarlas
Es decir, puede declarar todas las variables finalhasta que sepa que tendrá que cambiarlo, momento en el que puede eliminar el final. Un hecho comúnmente desconocido es que esto también es válido para los parámetros del método:
public void foo(final int arg) { /* Stuff Here */ }
- Cuando sucede algo malo, deja un rastro de evidencia detrás
Hay una serie de cosas que puede hacer cuando tiene una excepción: obviamente, iniciar sesión y realizar algunas tareas de limpieza serían algunas. Pero también puede dejar un rastro de evidencia (por ejemplo, establecer variables en valores centinela como "NO SE PUEDE CARGAR ARCHIVO" o 99999 sería útil en el depurador, en caso de que catchsupere un bloque de excepción ).
- Cuando se trata de consistencia: el diablo está en los detalles
Sea tan coherente con las otras bibliotecas que está utilizando. Por ejemplo, en Java, si está creando un método que extrae un rango de valores, haga que el límite inferior sea inclusivo y el límite superior sea exclusivo . Esto lo hará consistente con métodos como el String.substring(start, end)que opera de la misma manera. Encontrará que todos estos tipos de métodos en Sun JDK se comportan de esta manera, ya que realiza varias operaciones, incluida la iteración de elementos consistentes con las matrices, donde los índices son desde cero ( inclusive ) hasta la longitud de la matriz ( exclusivo ).
¿Cuáles son algunas de tus prácticas defensivas favoritas?
Actualización: si aún no lo ha hecho, siéntase libre de intervenir. Estoy dando la oportunidad de recibir más respuestas antes de elegir la respuesta oficial .