ventajas
Enviado por vdebuen el Vie, 03/23/2007 - 20:20.
Las ventajas que aportan los NameBlock's se pueden resumir en que da facilidades para alcanzar mayor modularidad, mejor organización y legibilidad y mayor reusabilidad del código.
- Modularidad
-
La principal utilidad del NameBlock es dotar a TOL de un mecanismo de modularidad más allá del fichero que permita construir módulos, paquetes y librerías robustamente organizados. Una forma prudente de anidar los NameBlock's sería en este caso:
lib_id::package_id::module_id - Legibilidad
-
Pero un NameBlock podría también ayudar a la legibilidad del código en tareas más humildes, al sustituir llamadas a
set[num_field]porset::name_fieldsin el coste computacional añadido deset["name_field"]y sin tener que definir estructuras de datos espúreas para usarset->name_field - Eliminación de variables globales
-
Un caso especialmente recomendable es el que afecta a todos los parámetros de configuración y variables globales en general que deberían incluirse dentro de un único NameBlock global para evitar colisiones de nombres.
//Parámetros de configuración del proyecto NameBlock cfg = [[ //Configuración del acceso a la base de datos NameBlock db = [[Text alias, Text user, Text pwd, Text host, ...]], //Configuración de los directorios más utilizados NameBlock path = [[Text source, Text data, Text log, ...]], ... ]]; Real DBOpen(cfg::db::alias, cfg::db::user, cfg::db::pwd);
- Flexibilidad
-
Las funciones que devuelven conjuntos heterogéneos también ganarían flexibilidad, expresibilidad y facilidad de mantenimiento y uso sin recurrir a la definición de estructuras locales
NameBlock my_stats(Serie ser) {[[ Real num = CountS (ser); Real avg = AvrS(ser); Real stdv = StDsS(ser) ]]}; NameBlock stats = my_stats(SubSer(Gaussian(0,1,C),y2000,y2000m12d31)); Real stats::stdv;Aunque se añadan elementos a lo que devuelve la función o se reordenen los mismos seguirá funcionando el código que usara esta función accediendo con
::mientras no se cambien los nombres:NameBlock my_stats(Serie ser) {[[ Real num = CountS (ser); Real avg = AvrS(ser); Real mdn = MedianS(ser); Real stdv = StDsS(ser) ]]};
»
- Inicie sesión o regístrese para enviar comentarios

