Miércoles, 24 de mayo de 2006
Lo peor de C#
Daniel Calvin dice que lo peor que encontró al principio en C# era la imposibilidad de la herencia múltiple (se nota con eso que vino de C++ y no pasó por MFC o por COM, que también tienen el problema de la lechuga).
Sin embargo, lo que más me molesta al usar C# es el concepto general del recolector de basura. O sea, la necesidad de liberar recursos/cerrar conexiones, etcétera, de modo explícito (o semiexplícito con la palabra clave using).
¿Por qué tenemos estas dos castas de objetos? ¿Por qué el estado de abierto/cerrado de un archivo o conexión tiene que ser tan abierto, cuando podría ser un detalle manejado por la propia clase? De verdad me parece el peor de los puntos en todos los lenguajes de la plataforma .NET y también en Java (aclaremos).
Por: Ignacio Nicolás Rodríguez | Programar | Comentarios (1) | Referencias (0)
Comentarios
No necesariamente tendria que ser algo manejado por la clase. Hay recursos que pueden ser necesitados en distintos puntos de un programa. Y el acceso a esos recursos muchas veces es necesario hacerlo de forma consistente. Quizas antes de acceder hay que hacer algo y justo luego de usarlo hay que hacer otra cosa.
El tipico ejemplo es la apertura y cerrada de un archivo.
El problema es que el mecanismo de "using" es demasiado especifico. Cuando se lo usa, se fuerza al programador a tener que instanciar un objeto (el que se usa en el using) y tener que definirle la interface IDispose. Ese hecho asume que el recurso se libera solamente a travez de la destruccion de un objeto.
Eso que hicieron los de Sun y Microsoft respectivamente no es una solucion. Es solo meter una sintaxis nueva para realizar algo muy especifico. Algo mejor seria usar un delegate (como si fuera una lambda function) para relizar algo como (lo voy a simplificar para que se entienda la idea):
Archivo>>realizarTarea(TareaDelegate unaTarea){
this.Open();
unDelegate(this);
this.Close();
}
En el delegate realizar lo que tenes que realizar con el recurso. Se entiende la idea? pero esto no lo recomiendan porque es muy engorroso implementarlo. No porque la idea sea mala sino porque el lenguaje es precario. En fin, implementaron un mecanismo especifico para cosas demasiado especificas y para que el programador se sienta a gusto. En conclusion, piensan que los programadores son unos adoquines.
Saludos
Elvio | 20-11-2006 19:55:44
Comentar




