Oracle DB(PL / SQL)重构工具

时间:2009-10-06 02:15:15

标签: oracle refactoring plsql

我想知道是否有适用于Oracle数据库的重构工具,尤其是PL / SQL。我正在开发一个项目,其中一半的开发人员正在使用c#而另一半正在使用db,其中有一个庞大而复杂的模式和pl / sql中的大型代码库。我们也使用sql server,但数据库团队只使用Oracle。

这个代码库正在积极地工作并且正在逐步重构,但我很惊讶地发现oracle的重构工具有多糟糕(或者至少与Eclipse和Resharper相比)。

开发人员正在使用Toad,它只有基本的重构支持(可能因为它似乎更多地针对db admin然后开发)。我以前曾经使用过Toad,但是我总是假设pl / sql有更多的功能来处理代码,但从未调查过它。现在,据我所知,它提供的唯一重构是提取方法(过程)和变量重命名。我读了一篇比较sql developer和pl / sql developer的文章,这些似乎没有更好的重构支持。我快速浏览了eclipse数据工具项目,但是自从我上次使用它(几年前)以来,他们没有看到他们添加了重构支持。

对于Sql Server,存在Sql Refactor,当表结构发生更改时,它会传播到存储过程。这对我来说比手动更新所有存储过程更干净,更不容易出错。我过去在一个项目中使用了这些工具的旧版本,它们看起来相当不错但有点慢,但那是几年前它仍然可用。

类似于Oracle的东西对我们的开发团队来说已经是一个很大的帮助,所以如果它们确实存在,我会很感激为Oracle提供良好的重构工具。 谢谢, 喝醉

1 个答案:

答案 0 :(得分:10)

发生这种情况时,TOAD中的“D”代表开发人员而不是 DBA 。事实上,许多DBA对TOAD和其他此类工具进行了解剖。

你运气不好。据我所知,没有重构PL / SQL的工具。根本问题是重构作为一个概念来自OOP范例,而PL / SQL不是面向对象的。它不支持继承或多态(*)。这意味着许多支持经典重构实践的技术(比如Fowler定义的那些) - 抽象,接口等 - 在PL / SQL中没有模拟。

这样做的结果是,习惯于将重构作为其概念工具箱的一部分的人倾向于避免使用PL / SQL进行编程。我曾经对TDD名单进行了激烈的辩论。结果是,即使是那些需要并赞赏PL / SQL优点的开发人员宁愿用更好的工具支持语言开发,尽管the Agile Manifesto的第1条也是如此。

最重要的重构工具是自动化单元测试。虽然TOAD没有(我认为)已经集成了单元测试,但Oracle SQL Developer的下一个版本将会。还有独立的单元测试工具。我最近在another SO thread中提到了其中几个。

在重构PL / SQL以匹配数据库中的更改方面,可以说,与表的大多数交互应该由生成的表API来解决,而不是嵌入在事务PL / SQL中。在这个快乐的领域中,不需要重构工具,我们只需要重新生成相关的API。我上面链接的帖子也提到了QCGU,这是一个可以做到这一点的工具。当然,当我们有一个没有以这种方式组织的PL / SQL代码库时,生活就会变得更难。您将不会惊讶地发现在PL / SQL中实现Feathers的WELC没有很多工具支持。

(*)是的,我知道Oracle有类型,但它们是(a)SQL而不是PL / SQL和(b)有多少人实际上正在构建使用它们的API?