Oracle DB(PL/SQL)重构工具

Cro*_*ked 7 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的良好重构工具提出一些建议.谢谢,Crocked

APC*_*APC 10

事实上,TOAD中的"D"代表开发人员而不是DBA.事实上,许多DBA都在解析TOAD和其他类似的工具.

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

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

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

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

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

  • 汤姆·基特和史蒂文·费尔斯坦(Steven Feuerstein)在表格API的好处与弊端之间(well(好吧,差不多):http://asktom.oracle.com/pls/asktom/f?p = 100:11:0 :::: P11_QUESTION_ID:672724700346558185 (3认同)