2009-10-06 9 views
7

Je me demandais s'il existait de bons outils de refactoring pour les bases de données Oracle et en particulier pour PL/SQL. Je travaille sur un projet où la moitié des développeurs travaillent avec C# et l'autre moitié sur la base de données où il y a un schéma large et complexe et une grande base de code en pl/sql. Nous utilisons également sql server mais l'équipe de base de données travaille exclusivement avec Oracle.Outils de refactoring Oracle DB (PL/SQL)

Cette base de code est activement travaillée et est en train d'être refactorisée progressivement mais j'ai été assez surprise de voir à quel point les outils de refactoring pour Oracle semblent être (ou au moins en comparaison d'Eclipse et Resharper). Les développeurs utilisent Toad qui ne dispose que d'un support de refactoring de base (probablement parce qu'il semble être plus orienté vers db admin que de développement). J'ai déjà utilisé Toad auparavant, mais j'avais toujours supposé pour pl/sql qu'il y avait plus de fonctionnalités pour travailler avec du code mais je ne l'avais jamais envisagé. Maintenant, autant que je peux voir les seuls refactorings qu'il fournit sont la méthode d'extraction (procédure) et le changement de nom de variable. J'ai lu un article comparant le développeur sql et le développeur pl/sql et ceux-ci ne semblent pas mieux supporter le refactoring. J'ai jeté un coup d'œil sur le projet des outils de données eclipse mais je ne pouvais pas voir qu'ils avaient ajouté un support de refactoring depuis que je l'ai utilisé pour la dernière fois (il y a quelques années).

Pour Sql Server il existe Sql Refactor qui, lorsque les structures de table sont modifiées, est propagé aux procédures stockées. Ceci est pour moi beaucoup plus propre et moins sujette aux erreurs que de demander à quelqu'un de mettre à jour manuellement toutes les procédures stockées. J'ai utilisé une ancienne version de ces outils sur un projet dans le passé et ils semblaient assez bien mais un peu lents mais c'était il y a quelques années et c'était encore utilisable. Quelque chose de similaire pour Oracle serait déjà d'une grande aide pour notre équipe de développement. J'apprécierais donc que vous trouviez des indications sur les bons outils de refactoring pour Oracle s'ils existent. Merci, crocked

Répondre

9

Comme il arrive le "D" dans TOAD se tient Developer pas DBA. En fait, beaucoup de DBA anathématisent TOAD et d'autres outils similaires.

Vous n'avez pas de chance. Pour autant que je sache, il n'y a pas d'outils pour refactoriser PL/SQL. Le problème de base est que le refactoring en tant que concept provient du paradigme OOP et que PL/SQL n'est pas orienté objet. Il ne prend pas en charge l'héritage ou le polymorphisme (*). Cela signifie que bon nombre des techniques qui sous-tendent la pratique du refactoring classique (disons définies par Fowler) - abstraction, interfaces, etc. - n'ont pas d'équivalent en PL/SQL. Le corollaire de ceci est que les gens qui ont l'habitude d'avoir un refactoring dans le cadre de leur boîte à outils conceptuelle ont tendance à éviter la programmation avec PL/SQL. J'ai déjà eu un débat houleux sur la liste TDD. Le résultat étant que même les développeurs qui ont besoin et apprécié les vertus de PL/SQL préfèrent développer dans des langages avec un meilleur support d'outil, malgré la clause # 1 de the Agile Manifesto.

L'outil le plus important pour le refactoring est le test unitaire automatisé. Bien que TOAD n'ait pas (je pense) de tests unitaires intégrés, la prochaine version d'Oracle SQL Developer le fera. Il existe également des outils de test unitaires autonomes. J'ai récemment mentionné quelques-uns d'entre eux dans another SO thread. En termes de refactoring PL/SQL pour correspondre aux changements dans la base de données, la plupart des interactions avec les tables doivent être sous-interprétées par les API de tables générées plutôt que d'être intégrées dans PL/SQL transactionnel. Dans ce monde heureux, il n'y a pas besoin d'outils de refactoring, nous avons juste besoin de re-générer les API pertinentes. Le post auquel je suis lié ci-dessus mentionne aussi QCGU, un outil qui peut le faire.Bien sûr, lorsque nous avons une base de code PL/SQL qui n'est pas organisée de cette manière, la vie est plus difficile. Vous ne serez pas surpris d'apprendre qu'il n'y a pas beaucoup d'outils pour la mise en œuvre de WELC de Feathers en PL/SQL. Oui, je sais qu'Oracle a des types mais ils sont (a) SQL non PL/SQL et (b) combien de personnes fabriquent-ils réellement des API les utilisant?

+0

+1 pour la réponse complète. Où vous dites: "sans doute la plupart des interactions avec les tables doivent être sous-entamées par les API de tables générées plutôt que d'être intégrées dans PL/SQL transactionnel". Avez-vous des liens \ ressources que vous pouvez me signaler à ce sujet? –

+1

Comme avec la plupart des choses PL/SQL, Steven Feuerstein est l'homme goto. Dans ce cas, sa présentation Break Your Addiction To SQL est le point de départ. Essayez d'attraper une conférence (il est un grand présentateur) Malheureusement, Internet ne semble pas avoir une copie de celui-ci, mais ses trucs Best Practices mentionne beaucoup: http://www.toadworld.com/Education/StevenFeuersteinsPLSQLExperience/ Trainingandpresentations/tabid/155/Default.aspx ... Aussi le blog Toon Koppleaars est très bon sur le thème de la construction d'API PL/SQL: thehelsinkideclaration.blogspot.com – APC

+0

Merci de me revenir si vite avec les liens etc - Je suis d'accord en ce qui concerne Steven Feuerstein présentant des compétences - Saw ma première présentation de son sur le 11 septembre! En espérant que je puisse être épargné du travail, je peux assister à l'UKOUG le 30 et le voir le même jour que lui. Merci encore –