Cuando realizo cambios en sistemas grandes, a menudo enfrento el problema de que una parte de la funcionalidad necesita obtener algunos datos de otra parte, pero están en diferentes partes de un árbol de llamadas profundo y ramificado, posiblemente fluyendo a través de escuchas de eventos, llamadas diferidas, etc. De esta manera, un simple cambio puede aumentar rápidamente.
Una cita relacionada de la publicación del blog de Yossi Kreinin en http://www.yosefk.com/blog/i-want-a-struct-linker.html :
Tiene algún tipo de estructura de datos que pasa mucho. Pronto, lo más valioso de la estructura no son los datos que guarda, sino el hecho de que está disponible a través de un flujo de control.
Las variables globales son una forma clásica de dejar que el código "grite" a código distante, pero se sabe que son problemáticas. Las variables de ámbito dinámico son una forma más restringida, pero también son problemáticas.
¿Hay alguna investigación de lenguaje de programación dirigida a resolver este problema? ¿Podemos hacer que sea más fácil agregar flujos de datos imprevistos a una gran base de código, sin dejar de tener una comprobación estática, pruebas unitarias sencillas y otras ventajas?