¿Qué es la programación defensiva?
La programación defensiva es la creación de código para software diseñado para evitar problemas problemáticos antes de que surjan y hacer que el producto sea más estable. La idea básica detrás de este enfoque es crear un programa que pueda ejecutarse correctamente incluso a través de procesos imprevistos o cuando los usuarios realizan entradas inesperadas. La programación defensiva a menudo se basa en una combinación un tanto paradójica de eliminar el código innecesario y al mismo tiempo garantizar que se generen cantidades suficientes para manejar todas las acciones posibles del usuario. Las pruebas exhaustivas también son importantes para este proceso, como lo es la creación de software que puede ser auditado y verificado fácilmente.
En muchos sentidos, el concepto de programación defensiva es muy similar al de la conducción defensiva, ya que los problemas se consideran antes de que surjan. Un método común para intentar hacer esto es a través de la creación de código destinado a tratar cualquier posible escenario que se le presente. Los programadores suelen tratar de determinar las formas en que los usuarios pueden ingresar datos o intentar utilizar software que puede estar fuera de los parámetros esperados. El uso de la programación defensiva se basa en la base del propio código, que está diseñado para poder manejar entradas extrañas sin fallar ni encontrar un evento de error.
Aparentemente en contraste con este elemento de programación defensiva, sin embargo, el código bien escrito debe estar desprovisto de entradas innecesarias. Cuantas más líneas de código formen parte de un programa, más oportunidades hay para que se introduzcan errores. Las prácticas de programación defensivas suelen alentar a los desarrolladores a eliminar el código innecesario y simplificar los programas siempre que sea posible. Por lo tanto, debe alcanzarse un equilibrio entre la programación que tiene en cuenta los escenarios inesperados y el código que contiene demasiado contenido innecesario sin proporcionar un beneficio.
Las pruebas son uno de los aspectos más importantes de la programación defensiva. A pesar del gran esfuerzo realizado para garantizar que el código sea perfecto, los desarrolladores casi siempre pierden un error o crean código con resultados inesperados. Las pruebas exhaustivas realizadas por probadores profesionales permiten que un desarrollador tenga cientos de horas de uso del producto para encontrar errores antes de que se lance el software.
El código en sí que se crea en la programación defensiva también es un aspecto vital de este proceso. No solo debe simplificarse tanto como sea posible, sino que también debe presentarse de una manera clara y concisa. Un desarrollador suele utilizar las auditorías para revisar el código que se ha creado. Esto permite a otros programadores ver el trabajo realizado, y el código legible es importante para que esto sea una parte realista del desarrollo.