|
|
Alias para los namespaces
Último artículo 05-11-2007, 4:42 escrito por jaberme. 16 respuestas.
-
05-05-2007, 9:18 |
-
jaberme
-
-
-
Se unió el 04-16-2006
-
Almeria
-
Envíos: 298
-
-
|
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 |
-
amarquez
-
-
-
Se unió el 04-18-2006
-
-
Envíos: 302
-
-
|
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 |
-
jaberme
-
-
-
Se unió el 04-16-2006
-
Almeria
-
Envíos: 298
-
-
|
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 |
-
amarquez
-
-
-
Se unió el 04-18-2006
-
-
Envíos: 302
-
-
|
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 |
-
jaberme
-
-
-
Se unió el 04-16-2006
-
Almeria
-
Envíos: 298
-
-
|
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 |
-
amarquez
-
-
-
Se unió el 04-18-2006
-
-
Envíos: 302
-
-
|
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 |
-
jaberme
-
-
-
Se unió el 04-16-2006
-
Almeria
-
Envíos: 298
-
-
|
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 |
-
amarquez
-
-
-
Se unió el 04-18-2006
-
-
Envíos: 302
-
-
|
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 |
-
karloch
-
-
-
Se unió el 04-01-2006
-
Almería
-
Envíos: 378
-
-
|
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 |
-
jaberme
-
-
-
Se unió el 04-16-2006
-
Almeria
-
Envíos: 298
-
-
|
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 |
-
amarquez
-
-
-
Se unió el 04-18-2006
-
-
Envíos: 302
-
-
|
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 |
-
jaberme
-
-
-
Se unió el 04-16-2006
-
Almeria
-
Envíos: 298
-
-
|
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 |
-
jaberme
-
-
-
Se unió el 04-16-2006
-
Almeria
-
Envíos: 298
-
-
|
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 |
-
jaberme
-
-
-
Se unió el 04-16-2006
-
Almeria
-
Envíos: 298
-
-
|
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 |
-
jaberme
-
-
-
Se unió el 04-16-2006
-
Almeria
-
Envíos: 298
-
-
|
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
|
|
|