| Desarrollo C++ con Enterprise Architect & Eclipse |
|
|
|
| Cotidianidad | |||||
| Escrito por Jorge Riquelme Santana | |||||
| Sábado 07 de Junio de 2008 22:05 | |||||
|
Hoy me dediqué a "Asalto Pingüino", el proyecto para Taller de Desarrollo de Software del cuál soy parte. Somos un equipo de 4 personas, muuuuy ocupadas (e inexpertas)
A pesar de que todo ya está "funcionando", para desarrollo C++ el combo EA+Eclipse aún no me satisface. EA es una de las herramientas de modelado que más flores recibe en la blogosfera y sitios "tech", y es buena en realidad, PERO aún puede mejorar mucho. Cuando un diagrama de clases empieza a ser menos "trivial", el código C++ generado por EA deja de ser compilable, y hay que empezar a corregir sus desinteligencias a mano. EA no maneja adecuadamente las referencias circulares, y porfía en agregar "#includes" que generan errores de compilación en cada sincronización. Al momento de generar código se agradecería un "warning", y la opción para indicar en que lado de la asociación se declara un tipo incompleto. Tampoco he visto como poder agregar un "using namespace::clase"; se extraña una vista que cumpla esa función tal como hay una para agregar #includes. Se pierde información en un ciclo de sincronización. Por ejemplo, EA permite modelar interfaces en el diagrama de clases, generando código C++ con métodos virtuales puros. El problema, es que cuando se sincroniza desde el código al modelo, EA hace caso omiso de que ya existe una relación de "realización" entre la clase y la interface en cuestión, y agrega una relación de "generalización". Lamentablemente lo más sensato es no usar realizaciones, y modelar las implementaciones de interfaces usando generalizaciones, porque si no en cada sincronización habría que borrar una pila de relaciones redundantes a mano. Evidentemente este problema surge del hecho que C++ no cuenta con un constructo para representar interfaces. Sin embargo, EA debería ser los suficientemente "inteligente" como para darse cuenta que en C++ un método virtual puro es la especificación de una operación, y que por lo tanto una clase compuesta exclusivamente de este tipo de métodos es una interface. Más de forma que de fondo, me carga el formato de las constantes que define EA en cada header. Es un string gigantesco, supongo que para identificar de alguna manera el archivo entre cada sincronización, ya que en la plantilla que genera el código dice claramente: "WARNING: DO NOT MODIFY THIS TEMPLATE BELOW THIS POINT". Podría ser algo más legible, como se acostumbra.
Esto hace que EA genere todos los setters de la forma:
No importa que se cambie el nombre del parámetro!, igual usará newVal, provocando código erróneo:
En este caso se espera una plantilla un poco más inteligente no?, que además chequee si el nombre del argumento es igual al de la propiedad, para agregar un this-> si corresponde. A mi me gustan los setters del tipo:
Asi que, cambié la plantilla a:
Por el otro lado, Eclipse igual tiene sus falencias. El CDT todavía está lejos de alcanzar el nivel que brinda JDT. Faltan muchas de las características que permiten desarrollar rápido y con mayor calidad. Uno extraña cosas como los refactors, un indexador más poderoso, autocompletación más inteligente, un "organice includes", etc. Algo que me llama mucho la atención es por qué puedo formatear UN archivo fuente y no TODO el proyecto?; si Shift+Alt+F está funcionando… entonces cuál es el drama de repetir eso para cada archivo fuente?. Por suerte se pueden incorporar herramientas externas a eclipse. En "run / Externals Tools" se pueden configurar invocaciones a programas, pasando como parámetros variables de eclipse. Hice un pequeño script bash para formatear el directorio src con astyle:
Se poco de bash, así que si hay una forma de hacer lo mismo con una sola línea y la mitad de iteraciones, perdónenme por newbie :roll:. Luego en "run / Externals Tools/Open External Tools Dialog…", se crea un nuevo programa, se le asigna un nombre, la ruta del script astylizar.sh, y en la lista de argumentos de escribe la variable ${project_loc}, que representa la ruta absoluta del recurso seleccionado. Así, para formatear todo el código del proyecto, se selecciona el directorio src y se llama a Astylizar vía "External Tools". A pesar de que le falta a CDT, le tengo fé a la comunidad eclipse. Se ve actividad y progreso en el news del proyecto, y el resultado de las iniciativas de la comunidad en otras herramientas hace pensar que probablemente eclipse se alce como uno de los IDEs open source preponderantes para C++ en el futuro. Hasta acá dejo mis lloriqueos, y mejor sigo trabajando
Compartir
Hits: 3521 Comentarios (1)
![]()
marce
said:
|
|
... Hola, te felicito por tu post, mi nombre es marcela, y estoy con ganas de entender como funciona el Enterprise Architect y si es el caso con eclipse, en fin .., si puedes recomendarme algun sitio donde conseguir manaules en español, de esto, te agradeceria mucho, by bye y muchissisissimas gracias , por lo que puedas mandarme.., \n Esta dirección electrónica esta protegida contra spambots. Es necesario activar Javascript para visualizarla '> Esta dirección electrónica esta protegida contra spambots. Es necesario activar Javascript para visualizarla |
| < Anterior | Siguiente > |
|---|