Asp.net mvc 重构经典ASP的最佳实践?

Asp.net mvc 重构经典ASP的最佳实践?,asp.net-mvc,coding-style,refactoring,Asp.net Mvc,Coding Style,Refactoring,我必须在一个大型的、陈旧的、充斥着意大利面条的ASP系统中进行一些重要的开发。我已经离开ASP很长一段时间了,我的精力集中在Rails开发上 我已经采取的一个基本步骤是将页面重构为具有有意义名称的子页面和函数,这样至少可以很容易地理解@top文件中通常发生的事情 是否有一个适合ASP的MVC框架?或者至少是如何从视图中获取业务逻辑的最佳实践?(我记得那天我做了很多收录——现在还是这样吗?) 我也想对业务逻辑进行一些单元测试,但也许我要求太多了 更新: 项目中有200多个ASP脚本,大约数千行;)

我必须在一个大型的、陈旧的、充斥着意大利面条的ASP系统中进行一些重要的开发。我已经离开ASP很长一段时间了,我的精力集中在Rails开发上

我已经采取的一个基本步骤是将页面重构为具有有意义名称的子页面和函数,这样至少可以很容易地理解@top文件中通常发生的事情

是否有一个适合ASP的MVC框架?或者至少是如何从视图中获取业务逻辑的最佳实践?(我记得那天我做了很多收录——现在还是这样吗?)

我也想对业务逻辑进行一些单元测试,但也许我要求太多了

更新: 项目中有200多个ASP脚本,大约数千行;)啊


我们可能会选择“大重写”,但在此之前,当我更改页面时,我想多花一点时间清理意大利面。

您有没有可能从ASP迁移到ASP.Net?或者你想把它保存在经典的ASP中,只是把它清理一下。如果可能的话,我建议尽可能多地迁移到.Net。看起来您可能正在重写/重新组织大量代码,因此迁移到.Net可能不需要太多额外的工作。

由于完全重写工作系统可能非常危险,我只能给您一个小提示:在项目上设置丰富的标记,CTAG。通过这种方式,您可以跳转到函数和子函数的定义,我认为这很有帮助

论逻辑与“观点”的分离。VBScript支持类的som类OO。我倾向于编写符合我在asp页面上作为“视图”包含的逻辑的类。然后,我将该视图与类挂钩,如Username:。MyAccount类还可以有一些方法,如:MyAccount.Login()等


有点原始,但至少您可以封装一些代码并将其隐藏在HTML中。

可能是其他人编写了您现在维护的大部分或全部系统。寻找常见的坏习惯(重复的代码、作用域过宽的变量、嵌套的if语句等),并像重构任何其他语言一样进行重构。注意同一文件或不同文件中重复出现的内容,并将它们抽象为函数

如果代码是由不同的人编写/维护的,则可能存在编码风格不一致的问题。我发现,将代码放回行中可以更容易地看到可以重构的东西

“数千行”让我怀疑,在某些情况下,松散相关的内容可能会显示在同一页面上。同样,您希望将它们抽象为单独的子例程


最终,您希望编写对象来帮助封装数据库连接之类的东西,但要做到这一点还需要一段时间。

经典ASP系统的文档相当简单

管理层不是在寻找重写

因为您一直在使用RubyonRails,所以您的(VB/C#)ASP.NET充其量也可以

我的经验

我也继承了一个经典的ASP系统,它是由EXCELVBA类型随意拼凑而成的。有很多这样的东西
垃圾
(有时会丢失结束标记;啊!)。在2.5年的时间里,我添加了一个安全系统,一个公共库,CSS+XHTML,并且能够强制验证xhtml1.1(不幸的是,没有正确的mime类型),并构建了一个相当健壮的ajaxy报告系统,每天有80个用户使用

我使用了jEdit、ctag(如上所述)和其他一些插件

我的建议 尝试创建一个主包含文件,从中导入所有常用的内容。诸如登录/注销、数据库访问、web服务、javascript库等

一定要上课。它们是超原始的(没有继承),但正如jamting所说,它们可以很方便

正确缩进脚本

评论

编写外部架构文档。我个人使用LyX,因为生成格式良好的pdf格式会让人头疼,但你可以随意使用。如果使用wiki,请安装graphviz加载项并使用它。制作可以轻松修改的快速图表非常容易

因为我不知道这些增强需要有多大的实质性,所以我建议在规划这些增强时,有一个好的从高级到中级的体系结构文档是非常有用的

在业务逻辑单元测试中,我发现唯一有效的方法是在asp中设置一个xml rpc侦听器,该侦听器导入主库,并在主库的任何子包含中公开函数(而不是子例程),然后分别构建,使用一种语言的单元测试系统,该语言更好地支持通过xml rpc调用ASP函数的功能。我使用python,但我认为Ruby应该做到这一点。(这有意义吗?)。很酷的一点是,编写软件单元测试部分的人甚至不需要看ASP代码,只要他们对要调用的函数有适当的描述,这样他们就可以成为你身边的人

有一个名为sourceforge的项目,但上一次发布是在2004年,它被标记为非活动。从未使用过它,但它是纯vbscript。粗略地看一下代码,就知道作者知道他们在做什么

最后,如果你需要帮助,我可以做合同规定的远程办公工作(每周最多8小时)。请按照链接线索查找联系人信息


祝你好运!HTH.

我的建议是继续重构,经典的ASP支持类,因此您应该能够将除显示代码以外的所有内容移动到包含类的ASP文件中。 请参阅这篇文章,了解从老式asp向asp.NET过渡的详细信息