Optimización prematura
# Optimización prematura

En informática, el antipatrón de diseño la optimización prematura ocurre cuando un programador permite que las consideraciones de costo en tiempo o espacio afecten el diseño de un componente de software antes de tener un diseño correcto, lo que puede resultar en un diseño más complicado que lo necesario.

Un mejor enfoque es el de diseñar primero, luego codificar el diseño y finalmente tomar en cuenta las consideraciones de costo empíricas (perfiles de ejecución o medidas de tiempo/espacio) o formales (complejidad tiempo/espacio) para decidir en que partes se debe invertir tiempo para realizar optimizaciones. De todas formas, un diseño simple y elegante es más fácil de optimizar en su momento. Ocurre con frecuencia que las partes donde se puede ganar más al optimizar no son las que inicialmente se hubiera esperado, de manera que al optimizar prematuramente se complica el análisis del código.

En la práctica, muchas veces es necesario tomar en cuenta las consideraciones de costo desde el principio del diseño, sin embargo, el diseñador debe tratar de no confundir diseño y optimización.

Algunas veces se considera una buena práctica el eliminar comentarios, espaciado y operaciones no utilizadas antes de poner en uso aplicaciones escritas en lenguajes interpretados como PHP o JavaScript. En esos casos, es preferible utilizar una herramienta de despliegue que realice estas transformaciones en lugar de perder un fuente autodocumentado y de más fácil mantenimiento. Tampoco es buena idea mantener en paralelo la versión para despliegue y la versión con comentarios dado que se corre el peligro de que éstas versiones no se correspondan.

Nota histórica: La frase La optimización prematura es la raíz de todos los males viene de Donald Knuth, prominente investigador en informática.

