2013-05-10

97/7 cosas que todos los programadores deberían saber


Cuidado con el SHARE

Fue mi primer proyecto de la compañía. Acababa de terminar mi carrera y estaba ansioso de probarme a mí mismo, quedarse hasta tarde todos los días pasar por el código existente. Mientras trabajaba en mi primera película me hice cargo extra para poner en marcha todo lo que había aprendido - comentarios, registro, sacando código compartido en las bibliotecas de ser posible, las obras. La revisión de código que me había sentidotan listo para vino como una sorpresa desagradable - reutilización estaba mal visto!
¿Cómo puede ser esto? A lo largo de la universidad reutilización se celebró como el epítome de la ingeniería de software de calidad. Todos los artículos que he leído, los libros de texto, los profesionales de software con experiencia que me enseñó. Fue todo mal?
Resulta que me estaba perdiendo algo importante.
Contexto.
El hecho de que dos partes muy diferentes del sistema realizar alguna lógica de la misma manera significa menos de lo que pensaba. Hasta me había sacado aquellas bibliotecas de código compartido, estas piezas no eran dependientes el uno del otro. Cada uno podría evolucionar de forma independiente. Cada uno podía cambiar su lógica para satisfacer las necesidades de los cambios en el entorno empresarial del sistema. Estas cuatro líneas de código similar fueron accidentales - una anomalía temporal, una coincidencia. Es decir, hasta que llegué yo.
Las bibliotecas de código compartido que creé ataron los cordones de los zapatos de cada pie el uno al otro. Pasos por un dominio de negocio no podrían ser hechas sin primero la sincronización con la otra. Los costes de mantenimiento en las funciones independientes utilizados para ser insignificante, pero la biblioteca común requiere un orden de magnitud más pruebas.
Mientras me redujo el número absoluto de líneas de código en el sistema, que había aumentado el número de dependencias. El contexto de estas dependencias es fundamental - si hubieran sido localizados, puede haber sido justificada y tenía algo de valor positivo. Cuando estas dependencias no se mantienen bajo control, sus tentáculos se enredan las preocupaciones más grandes del sistema a pesar de que el código en sí se ve muy bien.
Estos errores son insidiosos en que, en el fondo, que suena como una buena idea. Cuando se aplica en el contexto adecuado, estas técnicas son valiosas. En el contexto equivocado, que aumenten el costo en lugar del valor. Al entrar en una base de código existente sin el conocimiento del contexto en el que se utilizan las distintas partes, estoy mucho más cuidado en estos días acerca de lo que se comparte.
Cuidado con la acción. Revise su contexto. Sólo entonces, proceder.
Por Udi Dahan