Club.NET Almería

Plataforma .NET de Ingenieros/Ingenieros Técnicos en Informática de Almería
¡Bienvenid@ a Club.NET Almería! Iniciar sesión | ÚNETE a la web | Ayuda
en Buscar
Principal Blogs Foros Imágenes Descargas

Alias para los namespaces

Último artículo 05-11-2007, 4:42 escrito por jaberme. 16 respuestas.
Página 1 de 2 (17 elementos)   1 2 Siguiente >
Ordenar mensajes: Anterior Siguiente
  •  05-05-2007, 9:18 1101

    Alias para los namespaces

    Podemos usar nombres mas convenientes para nosotros, sin mas que asociarlos al FQDN del namespace. 
    (FQDN = fully-qualified domain name = nombre completo, de toda la ruta de clases)

    using System.Web.UI.WebControls;
    using MyComponent.Web.UI.WebControls;

    using System.Web.UI.WebControls;

    using cacharrico = MyComponent.Web.UI.WebControls;

     

    en lugar de poner esto : 

    MyComponent.Web.UI.WebControls.Calender calendario = new MyComponent.Web.UI.WebControls.Calender();

    podemos poner esto: 
    cacharrico.Calender  calendario = new cacharrico.Calender();

    José Antonio Álvarez Bermejo.
    - - - disclaimer - - -
    Las opiniones son como el olor corporal, a cada uno le gusta el suyo. No te esfuerces en oponerte a mi opinión por que esa es tú opinión y a mi me trae sin cuidado.
  •  05-07-2007, 2:31 1110 en respuesta a 1101

    Re: Alias para los namespaces

    Otra opción es añadir una referencia a MyComponent en tu proyecto, y así simplemente escribiendo el

     "using MyComponent;"

     Tienes disponible todas las clases de ese espacio de nombres para usar sin problemas, y sobre todo sin recurrir a confusos alias como "cacharrico", porque normalmente cuando andamos faltos de imaginación acabamos ponniendo nombres como "tmp1" "tmp2" y similares ("cacharrico1", "cacharrico2"?).


    Fullbyte Alchemist
  •  05-07-2007, 4:34 1111 en respuesta a 1110

    Re: Alias para los namespaces

    Haciendo eso, "importas" toda la jerarquia de componentes (o clases) que hay bajo "MyComponent), cuando se usa una clase, se debe emplear la cláusula "using" referenciando a esa clase y no a la raíz. De hecho, el using, hace que el "class loader" traiga así más información cuando el objeto toca la clase en cuestión que si haces using MyComponent.......Calendar.

    Asi que para tu informacion, mejor estar falto de imaginacion (cacharrico3) que pletórico de referencias. Mas que nada si interesa tener un programa medianamente eficaz.


    José Antonio Álvarez Bermejo.
    - - - disclaimer - - -
    Las opiniones son como el olor corporal, a cada uno le gusta el suyo. No te esfuerces en oponerte a mi opinión por que esa es tú opinión y a mi me trae sin cuidado.
  •  05-07-2007, 5:12 1112 en respuesta a 1111

    Re: Alias para los namespaces

    En la balanza de todo programador hay dos brazos: por un lado la optimización, y por otro la facilidad de uso y legibilidad del código. A código más legible y mantenible, menos óptimo es el desempeño del programa.

    La cuestión es: ¿Para programas sencillos como lo que se suele hacer en prácticas o en experimentos (así como en los millones de ejemplos que se encuentran por Internet) sale más rentable reducir la legibilidad a cambio de un poco más de eficiencia?

    En una aplicación empresarial, con cientos de ensamblados y miles de referencias, seguramente sí (más aun si se distribuyen los componentes entre distintos servidores), en un notepad o en una aplicación con 10 clases distintas, probablemente no. 

    PD: Alguien podría tener la genial idea de programar un "optimizador de código", que sustituya todas las referencias "globalizadas" por referencias "directas" o alias. Tal vez incluso se venda bien ;) 


    Fullbyte Alchemist
  •  05-07-2007, 7:44 1113 en respuesta a 1112

    Re: Alias para los namespaces

    Nadie ha dicho que lo de los alias sea para grandes o pequeñas aplicaciones, pero independientemente, siempre se quiere que la aplicación tenga un minimo de rendimiento, a quien se le ocurre lastrar las aplicaciones en FAVOR de la LEGIBILIDAD .... pero alma de dios, si te estoy diciendo que la LEGIBILIDAD (con los ALIAS) se mantiene y el rendmiento tambien, dejate de brazos del programador y de historias raras. Eso si, por lo que  dices, tus programas deben ser como los dentistas de la seguridad social:  sacamuelas. ¿Como puedes decir que te importa un huevo el rendimento? Hay que pincharse mucha mucha mucha anestesia para leer eso.

     

    nota: La tecnologia tiene un limite, todos sabemos que la capacidad humana para hacer las cosas mal,es infinita.

    Tu sigue programando tus programas al estilo dentista de la SS (seguridad social) para que vas a arreglar un empaste, es mejor sacar la muela. 


    José Antonio Álvarez Bermejo.
    - - - disclaimer - - -
    Las opiniones son como el olor corporal, a cada uno le gusta el suyo. No te esfuerces en oponerte a mi opinión por que esa es tú opinión y a mi me trae sin cuidado.
  •  05-08-2007, 1:32 1117 en respuesta a 1113

    Re: Alias para los namespaces

    ¿Hace falta que te recuerde lo del olor corporal? ¿qué mejoras de rendimiento voy a sacar en un notepad o en una calculadora? ¿Te recuerdo la respuesta de microsoft a ese dilema (Si funciona lento, actualiza el hardware)? y en ningún momento he dicho que me importe un huevo el rendimiento. Simplemente que hay aplicaciones en las que es un esfuerzo innecesario intentar sacar unas milésimas de segundo para el usuario. Lo que dije es que hay que añadir la referencia en tu proyecto (Y para usar MyComponent hay que añadir la referencia a la biblioteca en el proyecto, de lo contrario no podrías usarla).

    Por cierto, según el artículo original, en http://www.devx.com/tips/Tip/34419?trk=DXRSS_DOTNET la principal utilidad del using es para abreviar el nombre completo de una clase en el espacio de nombres, porque en el caso de que haya conflictos de nombres de clase, entonces hay que usar el nombre completo cualificado para distinguirlas. Por eso el ejemplo va con Calendar, porque esa clase ya existe en System.Globalization.Calendar y hay conflicto con MyComponent.Web.UI.WebControls.Calendar. Así pues, lo que se optimiza es el tiempo de escritura del programa en aplicaciones donde obligatoriamente tendrías que escribir bastante más (todo el MyComponent...)

    Y por cierto, cuando la pieza dental no se puede salvar, se saca y se puede sustituir por una pieza de cerámica enganchada en un implante de titano sobre el maxilar o un simple puente dental. En ese caso la diferencia de ir a la Seguridad Social o a un dentista privado es: Uno te deja el hueco, y el otro lo rellena.

    De todas formas, gracias por tu opinión. 

    PD: No son brazos del programador, sino la balanza del programador :P 

    PPD: He gastado más en escribir este post que todas las mejoras en tiempo que el uso de alias me proporcionaría en 3 meses. 


    Fullbyte Alchemist
  •  05-08-2007, 1:50 1120 en respuesta a 1117

    Re: Alias para los namespaces

    Bien, veo que para seguir en este hilo, al fin te has documentado. Pero sigues errando, tú indicastes que basta con incluir una referencia a MyComponent,y precisamente la discusion viene por ahí. NO hay que añadirla a MyComponent, sino a MyComponent.Web.UI.WebControls.Calendar  que es el componente concreto. ¿Ves? te vuelves a precipitar en tus posts.

    Precisamente, y ahora tú lo indicas bien, otra razón más por la que se debe hacer el "using" de la ruta completa a la clase es precisamente para obviar "conflictos" de usar, como TU DECIAS, la referencia a MyComponent en exclusiva, entonces existen los problemas. Por eso te indiqué que es poco productivo incorporar toda la jerarquia de clases bajo MyComponent.

    Precisamente el alias tiene su funcion ahí, en que como es preciso incorporar toda la referencia, se hace más manejable el alias. Pero te recuerdo que tú decidías obviarlo.

    En fin, respecto a lo del dentista, no tengo la menor duda de que sabes qué es un dentista, pero sigo prefiriendo al que te rellena el hueco.

    En cuanto al tiempo que has empleado en escribir este post, si lo hubieras empleado antes de escribirlo, en documentarte .... ninguno habriamos perdido el tiempo :-)

     

     


    José Antonio Álvarez Bermejo.
    - - - disclaimer - - -
    Las opiniones son como el olor corporal, a cada uno le gusta el suyo. No te esfuerces en oponerte a mi opinión por que esa es tú opinión y a mi me trae sin cuidado.
  •  05-08-2007, 3:24 1122 en respuesta a 1120

    Re: Alias para los namespaces

    :-P

    si hubieses dado esta respuesta desde el principio, tampoco habríamos perdido demasiado, básicamente porque con el "using MyComponent;" no tengo acceso tampoco al resto de clases "Web.UI.WebControls", sino que hay que especificar el "using MyComponente.Web.UI.WebControls;" 

    Y cuando dije lo de "obviarlo", es porque estaba pescando con el cebo equivocado. El tema no estaba en "optimizar" la velocidad del programa por "evitar la carga de referencias" sino en "mejorar" los tiempos de escritura del programa para evitar referencias duplicadas. No me fijé en que ya existía el System.Globalization.Calendar, básicamente porque no hay mucha gente que se sepa la jerarquía de componentes de .NET completa (Quien se la sepa que tire la primera piedra), y si NO estás usando la referencia a "System.Globalization" (Para convertir entre formatos internacionales, representación de números, fechas, etc), tampoco te será necesario definir el alias.

    Y efectivamente, "using MyComponent" no te va a cargar el Calendar para que lo uses, al igual que si no cargas "System.Collections.Generic" no puedes usar los Tipos Genéricos como Dictionary<key, DataType> que tan útiles son, porque al compilar no se crea un árbol completo con las referencias a todas clases, sino una lista (probablemente indexada mediante un hash), y por tanto no se produce la "super-mega-ultra" pérdida de rendimiento que tanto te preocupaba.

    Ha sido entretenido xD


    Fullbyte Alchemist
  •  05-08-2007, 8:34 1125 en respuesta a 1122

    Re: Alias para los namespaces

    Hasta donde yo tengo entendido... el principal uso de la directiva using ¿no es crear métodos abreviados a clases y namespaces que se encuentren en el mismo nivel especificado? (mirar aquí) Si únicamente hace eso, no debería tener el más mínimo impacto en el rendimiento de la aplicación ¿me equivoco?

    Lo que ya no se es si será directamente análogo con el import de Java.
     

  •  05-09-2007, 1:25 1128 en respuesta a 1125

    Re: Alias para los namespaces

    Puede ser.

    Pero para usar el using deben existir las referencias en tu proyecto. Y no es lomismo referenciar a MyComponet que a MyComponet.Clase1.Subclase1.



    José Antonio Álvarez Bermejo.
    - - - disclaimer - - -
    Las opiniones son como el olor corporal, a cada uno le gusta el suyo. No te esfuerces en oponerte a mi opinión por que esa es tú opinión y a mi me trae sin cuidado.
  •  05-10-2007, 1:52 1133 en respuesta a 1128

    Re: Alias para los namespaces

    Si tienes varios proyectos en una solución, para añadir la referencia de un proyecto en otro tienes que añadirlo, y se añade entero (con todas sus clases). Si añades una referencia a una DLL se añade la DLL. Si en varios proyectos distintos tienes clases con el mismo nombre, usas el alias. Lo mismo si al añadir la referencia a la DLL te encuentras con que alguna de sus clases se llama igual que alguna de las tuyas.

    En ningún lugar del Visual C# Express he visto que puedas elegir "trozos de un proyecto" o "trozos de una dll". Se cargan completas y usas lo que necesites. El compilador optimizará.

    Otra historia son las referencias a componentes de .NET incluidos en el framework. Esos vienen separados por temática porque, como dices, incluirlos todos es una tontería (dado lo extensísimo que es el repertorio de clases del framework).


    Fullbyte Alchemist
  •  05-10-2007, 9:28 1134 en respuesta a 1133

    Re: Alias para los namespaces

    Joder, porque m ha dado por mirar este post, lo creia ya cerrado, pero bueno, tras el impacto inicial de la lectura, vamos a proceder a la respuesta por partes.

     

    TU DICES.: 

    Si tienes varios proyectos en una solución, para añadir la referencia de un proyecto en otro tienes que añadirlo, y se añade entero (con todas sus clases). Si añades una referencia a una DLL se añade la DLL. Si en varios proyectos distintos tienes clases con el mismo nombre, usas el alias. Lo mismo si al añadir la referencia a la DLL te encuentras con que alguna de sus clases se llama igual que alguna de las tuyas.

     

    YO RESPONDO: 

    1.- Si tienes varios "proyectos" en una solución, es tu intención tenerlos todos juntos. La solución es tu proyecto /aunque este sea una amalgama de proyectos/ No tiene mucho sentido tener un ente del que quieres usarlo todo pero solo necesitas parte. ¿incoherente?.

     

    TU DICES: 

    2.- Si en varios proyectos tienes clases con el mismo nombre, solo usaras el alias si quieres acortar el uso dentro del programa, aun asi en el using debes poner todo el FQDM. El alias te favorece un uso "consecuente" de una clase demasiado "hunidad" en la jerarquia (nota: las clases muy profudas en una jerarquia son, con frecuencia muy especialiazadas). Ademas, solo existe problema si todos los "proyectos" son ese proyecto ... no se .... no se....

     

    TU DICES: 

    En ningún lugar del Visual C# Express he visto que puedas elegir "trozos de un proyecto" o "trozos de una dll". Se cargan completas y usas lo que necesites. El compilador optimizará.

     

    YO RESPONDO: 

    3.- ¿Que sentido tiene poder elegir "trozos" de un proyecto....si tine sentdo enlazar tu proyecto con otro y luego, en el using "incorporar" especificamente qué parte de ese
    "tro" proyecto se usa (como servicio) por tu código. Ademas, que cojones crees que es una dll .... la dll se enlaza con TU CODIGO pero no le pega nada .... ¿has usad alguna vez una? De hecho, por que crees qe puedes modificar funciones dentro de una dll sin tener que recompilar el ejecutable.

     
    piuuu que rayadura.
     


    José Antonio Álvarez Bermejo.
    - - - disclaimer - - -
    Las opiniones son como el olor corporal, a cada uno le gusta el suyo. No te esfuerces en oponerte a mi opinión por que esa es tú opinión y a mi me trae sin cuidado.
  •  05-10-2007, 9:39 1144 en respuesta a 1134

    Re: Alias para los namespaces

    piuuuu piuuuu piuuuuu raca taca taca táaaaaa

    que vivaaaaa el foroooooo 


    José Antonio Álvarez Bermejo.
    - - - disclaimer - - -
    Las opiniones son como el olor corporal, a cada uno le gusta el suyo. No te esfuerces en oponerte a mi opinión por que esa es tú opinión y a mi me trae sin cuidado.
  •  05-10-2007, 9:41 1146 en respuesta a 1144

    Re: Alias para los namespaces

    amarquez, me tienes enganchao, estoy esperando tu response .... document.responseeeeee !!!!!

     


    José Antonio Álvarez Bermejo.
    - - - disclaimer - - -
    Las opiniones son como el olor corporal, a cada uno le gusta el suyo. No te esfuerces en oponerte a mi opinión por que esa es tú opinión y a mi me trae sin cuidado.
  •  05-10-2007, 9:54 1153 en respuesta a 1146

    Re: Alias para los namespaces

    amarquez.....amarquez....amarquez.....

     


    José Antonio Álvarez Bermejo.
    - - - disclaimer - - -
    Las opiniones son como el olor corporal, a cada uno le gusta el suyo. No te esfuerces en oponerte a mi opinión por que esa es tú opinión y a mi me trae sin cuidado.
Página 1 de 2 (17 elementos)   1 2 Siguiente >
Ver como una fuente de noticias RSS en XML
Ofrecido por Community Server (Personal Edition)