Best practices for refactoring classic ASP?我必须在一个大型的,古老的,意大利面条缠身的ASP系统中进行一些重要的开发。 我离开ASP很长时间了,将精力集中在Rails开发上。 我采取的一个基本步骤是将页面重构为具有有意义名称的子函数和子函数,以便至少可以很容易地理解文件的顶部@通常情况。 是否有一个针对ASP的有价值的MVC框架? 或关于至少如何摆脱业务逻辑的最佳实践? (我记得当初做过很多包含操作–还是那样做吗?) 我也想对业务逻辑进行一些单元测试,但是也许我要的太多了? 更新: 项目中有200多个ASP脚本,几千行长;)U! 我们可能会选择"大改写",但是在那之前,当我要更改页面时,我想花一些额外的时间来清理意大利面。 假设条件 Classic ASP系统的文档非常简短。 管理层不寻求重写。 由于您一直在做红宝石,因此(VB / C#)ASP.NET最多可以通过。 我的经验
我也继承了一个经典的ASP系统,该系统被ex excel-vba类型随意组合在一起。 我使用了带有cTags的jEdit(如上面的果酱所提到的)和其他一些插件。
我的建议 使用类。它们是超原始的(无继承),但正如jaming所说,它们可以很方便。 正确缩进脚本。 评论 编写外部体系结构文档。我个人使用LyX,因为它死于生成格式精美的pdf,但是您可以使用任何喜欢的格式。如果您使用维基,请安装并使用graphviz加载项。快速创建易于修改的图表非常容易。 由于我不知道需要多少增强,因此我建议拥有一份良好的高级到中级体系结构文档对于规划增强非常有用。 在业务逻辑单元测试中,我发现唯一可行的方法是在asp中设置一个xml-rpc侦听器,该侦听器导入主库并公开任何主库的子包含项中的函数(虽然不是子例程),然后用一种语言构建一个单元测试系统,该语言可以更好地支持通过xml-rpc调用ASP函数的功能。我使用python,但我认为Ruby应该可以解决问题。 (那有意义吗?)。很酷的事情是,编写软件的单元测试部分的人甚至不需要查看ASP代码,只要他们对要调用的函数有不错的描述,因此他们可以是您身边的人。 sourceforge有一个名为aspunit的项目,但是上一个版本是2004年,被标记为非活动状态。从未使用过它,但是它是纯vbscript。粗略地看代码会告诉我,好像作者知道他们在做什么。 最后,如果您需要帮助,我有空余时间可以进行合同远程办公(最多8小时/周)。按照链接跟踪获取联系信息。 祝好运! HTH。 由于完全重写操作系统非常危险,因此我只给您一个小提示:在您的项目中设置丰富的标签,ctags。这样,您可以跳转到函数的定义和sub简易操作,我认为这很有帮助。 关于将逻辑与"视图"分开。 VBScript通过类支持som类的OO。我倾向于编写类,这些类执行包含在作为"视图"的asp页上的逻辑。然后,我将视图与类似Username的类挂钩:<%= MyAccount.UserName%>。 MyAccount类还可以具有以下方法:MyAccount.Login()等。 有点原始,但至少您可以封装一些代码并将其从HTML隐藏起来。 我将ASPUnit用于一些经典ASP的单元测试,并发现它会有所帮助。它可能很旧,但ASP也是如此。它很简单,但是确实可以使用,您可以根据需要自定义或扩展它。 我还发现Michael Feathers的《有效处理旧版代码》是寻找如何测试某些旧代码的有用指南。 只要保持简单,包含文件就可以提供帮助。有一次,我尝试为每个课程创建一个包含,但效果不太好。我喜欢有几个具有共同业务逻辑的main包含,对于复杂的页面,有时每个这些页面都有一个逻辑包含。我想您可以使用类似的设置来制作MVC。
我的建议是进行重构,经典的ASP支持类,因此您应该能够将除显示代码之外的所有内容移动到包含ASP的仅包含类的文件中。 重构ASP 关于将来的方向,我不会针对ASP.NET Web表单,而是要使用Microsoft的新MVC框架(ASP.NET的附加组件)。从经典ASP迁移到此将更加简单。 大概是其他人编写了您现在维护的大部分或全部系统。寻找通常的不良习惯(重复的代码,作用域范围太广的变量,if语句嵌套等),然后像其他任何语言一样进行重构。留意同一文件或不同文件中的重复发生的事情,并将其抽象为函数。 如果代码是由不同的人编写/维护的,则可能会出现编码风格不一致的问题。我发现将代码重新排列起来可以更轻松地查看可以重构的内容。 "数千行"使我感到怀疑,在某些情况下,可能在同一页面上显示松散相关的内容。同样,您想将它们抽象为单独的子例程。 最终,您希望编写对象来帮助封装诸如数据库连接之类的内容,但是要到达那里还需要一段时间。 您是否有可能从ASP迁移到ASP.Net?或者,您是否打算将其保留在经典的ASP中,而只是对其进行清理。如果可能的话,我建议尽可能多地迁移到.Net。看来您可能仍在重写/重新组织许多代码,因此,移至.Net可能不需要太多额外的工作。 软件开发项目管理实践表明,此类软件必须停用。 我知道做正确的事有多么困难,甚至在负责任的经理知道该死并且害怕除可能的浪费方式之外的其他事情时,这会更加困难。 但是还是。有必要开始开发新软件。永远保持下去是不可能的,他们等待退役的记录仪变得更糟。 如果您没有适当的规范/要求文档(考虑到这些编码器的Noobtry功能,我认为世界上没有ASP软件可以使用),那么您既需要一群了解软件功能的用户,也需要一位经理来负责验证需求。您需要检查每个功能并记录其要求。 在此过程中,您将学习有关软件及其业务的更多信息。一旦有了足够的信息,就可以开始开发新的信息。 这已经很老了,但我忍不住加了我的两分钱。如果必须重写,并且必须继续使用经典ASP:
|