2009-10-06 22 views
7

Me preguntaba si hay alguna buena herramienta de refactorización para bases de datos Oracle y especialmente para PL/SQL. Estoy trabajando en un proyecto donde la mitad de los desarrolladores están trabajando con C# y la otra mitad en el db donde hay un esquema grande y complejo y una gran base de código en pl/sql. También usamos el servidor sql, pero el equipo de la base de datos trabaja exclusivamente con Oracle.Oracle DB (PL/SQL) Herramientas de refactorización

Esta base de código se está trabajando de forma activa y se está refabricando gradualmente, pero me sorprendió ver cuán malas parecen ser las herramientas de refactorización para Oracle (o al menos en comparación con Eclipse y Resharper).

Los desarrolladores están usando Toad, que solo tiene soporte básico de refactorización (probablemente porque parece estar más dirigido al administrador de db que al desarrollo). Ya he usado Toad antes, pero siempre había asumido que para pl/sql había más funciones para trabajar con código pero nunca lo había analizado. Ahora, por lo que puedo ver, las únicas refactorizaciones que proporciona son método de extracción (procedimiento) y cambio de nombre de variable. Leí un artículo que compara el desarrollador sql y el desarrollador pl/sql y parece que estos no tienen ningún soporte mejor para la refactorización. Eché un vistazo rápido al proyecto de herramientas de datos de eclipse pero no pude ver que han agregado soporte de refactorización desde la última vez que lo usé (hace algunos años).

Para el servidor SQL existe Sql Refactor que cuando se cambian las estructuras de la tabla se propaga a través de los procedimientos almacenados. Esto para mí es mucho más limpio y menos propenso a errores que tener a alguien actualizar manualmente todos los procedimientos almacenados. Utilicé una versión anterior de estas herramientas en un proyecto en el pasado y parecían estar bien pero un poco lentas, pero eso fue hace unos años y todavía se puede usar.

Algo similar para Oracle ya sería de gran ayuda para nuestro equipo de desarrollo, por lo que agradecería algunos consejos para buenas herramientas de refactorización para Oracle, si es que existen. Gracias , crocked

Respuesta

9

Como ocurre la "D" en SAPO destaca desarrollador no DBA. De hecho, muchos DBA anatematizan TOAD y otras herramientas similares.

Usted ha perdido la suerte. Por lo que sé, no hay herramientas para refactorizar PL/SQL. El problema de raíz es que la refactorización como concepto proviene del paradigma de OOP, y PL/SQL no está orientado a objetos. No es compatible con herencia o polimorfismo (*). Esto significa que muchas de las técnicas que sustentan la práctica clásica de refactorización (por ejemplo, según lo definido por Fowler) - abstracción, interfaces, etc. - no tienen analogía en PL/SQL.

El corolario de esto es que las personas que están acostumbradas a tener refactorizaciones como parte de su caja de herramientas conceptual tienden a evitar la programación con PL/SQL. Una vez tuve un acalorado debate en la lista de TDD sobre esto. El resultado es que incluso los desarrolladores que necesitan y aprecian las virtudes de PL/SQL preferirían desarrollarse en idiomas con mejor soporte de herramientas, sin perjuicio de la cláusula n. ° 1 de the Agile Manifesto.

La herramienta más importante para la refactorización es la prueba automática de unidades. Aunque TOAD no tiene (creo) pruebas de unidades integradas, la próxima versión de Oracle SQL Developer lo hará. También hay herramientas de prueba unitarias independientes. Recientemente mencioné un par de ellos en another SO thread.

En términos de refactorización de PL/SQL para que coincida con los cambios en la base de datos, posiblemente la mayoría de las interacciones con tablas deben ser reducidas por API de tablas generadas en lugar de estar integradas en PL/SQL transaccional. En este mundo feliz no hay necesidad de herramientas de refactorización, solo necesitamos volver a generar las API relevantes. La publicación a la que he vinculado anteriormente también menciona QCGU, una herramienta que puede hacer esto.Por supuesto, cuando tenemos una base de código PL/SQL que no está organizada de esa manera, la vida es más difícil. No se sorprenderá al saber que no hay mucho soporte de herramientas para implementar el WELC de Feathers en PL/SQL.

(*) Sí, sé que Oracle tiene Tipos pero son (a) SQL no PL/SQL y (b) ¿Cuántas personas están creando API usando ellos?

+0

+1 para la respuesta completa. Donde dices: "discutiblemente, la mayoría de las interacciones con tablas deben ser reducidas por las API de tablas generadas en lugar de estar integradas en PL/SQL transaccional". ¿Tiene algún enlace \ recurso que pueda indicarme sobre este tema? –

+1

Como con la mayoría de las cosas PL/SQL, Steven Feuerstein es el hombre goto. En este caso, su presentación Break Your Addiction To SQL es el lugar para comenzar. Trate de ver una conferencia (es un gran presentador) Desafortunadamente, Internet no parece tener una copia, pero sus mejores prácticas lo mencionan mucho: http://www.toadworld.com/Education/StevenFeuersteinsPLSQLExperience/ Trainingandpresentations/tabid/155/Default.aspx ... También el blog de Toon Koppleaars es muy bueno sobre el tema de la creación de API PL/SQL: thehelsinkideclaration.blogspot.com – APC

+0

Gracias por contactarme tan rápido con los enlaces, etc. - Acepto con respecto a las habilidades de presentación de Steven Feuerstein - ¡Vi mi primera presentación suya el 11 de septiembre! Esperando que me puedan ahorrar trabajo para poder asistir al UKOUG el día 30 y verlo a él y a Tom el mismo día. Gracias de nuevo –

Cuestiones relacionadas