将ColdFusion 5基于标签的代码重构为CFC

时间:2009-02-09 10:50:50

标签: coldfusion refactoring cfc coldspring transfer-orm

我觉得有必要将旧的基于CF5的代码重构为CFC。我们已经在ColdSpring和Transfer中有一些代码,但感觉ColdSpring和Transfer的大量重写是毫无意义的。

我会遇到什么提示,方法和陷阱。

我怎样才能轻松实现这一目标?

我不介意将ColdSpring保留在混合中,但转移是我对项目规模的恐惧。

编辑:我的代码库已经运行了7到8年,并且非常庞大。要描述它会很困难,但我正在寻找关于方法的通用建议

6 个答案:

答案 0 :(得分:4)

只是为了它而改变整个代码库,如果它基本上工作将会在你的系统中引入很多潜在的错误。我认为没有一种简单的方法可以做到这一点。

如果你看一下你网站的哪个区域是1:最有可能改变,2:执行得最多,你可以针对一些可以从改变中受益的区域,看看它们是否适合基于CFC的方式框架,有什么好处。但对于大多数代码而言如果工作正常,可能没有迫切需要改变。

但是,无论何时您需要对系统的某个部分进行重大更改,都可能值得从OO角度查看,并在适用的情况下移动现有代码。

答案 1 :(得分:3)

在我正在进行的一个项目中(几乎相同的情况,甚至更多 - 大部分代码都非常糟糕)我正在使用我称之为“波浪式”的技术。我使用的一般想法如下:

  1. 从输出中分割处理。我不能在这里实现真正的MVC,但至少我可以将视图移动到单独的模板中(有时重用它们)并准备基本(模型)模板中的所有数据。
  2. 将所有重复代码移动到组件中 - 这是最重要的提示之一。
  3. 将相关功能分组到组件中。比如,所有与客户相关的信息分组到CustomerManager.cfc,发票到InvoiceManager.cfc等。
  4. 为什么“挥手”?在一个大项目中,我不能只是坐下来重写所有与客户相关的代码。所以我一步一步地做到了。例如,我必须处理客户注册,使用少量属性扩展它。我已经创建了基本组件,移动了方法来验证表单(检查登录,电子邮件等)并添加客户 - 所以这个页面以新的方式工作。我需要改进发票页面,我需要获取发票所有者的详细信息:我只需将方法添加到客户经理并删除直接查询。稍后编辑客户页面......也可称为“按需重构”或smth。

    依赖于您当前的项目状态可能会有其他内容。但它帮助了我很多。希望你会发现这些技巧很有用。

答案 2 :(得分:3)

在更改任何内容之前:创建一整套回归测试!

重构时,目标必须首先保留功能,这样才不会直接影响您的客户。

我同意Sergii的波浪式重构 - 这可以让你把东西分成可管理的块,而不是一气呵成。

但是无论你有什么方法,你可以创建的回归测试越多越好 - 这是你确认你没有无意改变某事的唯一方法。

答案 3 :(得分:1)

在不知道任何代码的情况下回答非常困难(接近不可能)。

这个问题有点像“我想要拆卸旧的大众汽车,并从零件中建造一个新的大众汽车,我应该考虑什么?” : - )

答案 4 :(得分:1)

我的建议是首先将业务逻辑封装到CFC中,而不是担心网站的整个表示层。

通过专注于业务逻辑,您将能够将最重要的功能转化为CFC并简化维护噩梦。将这些CFC“插入”现有网站也不会太难。

在尽可能多地将业务逻辑引入CFC之后,你会注意到巨大的怪物已被削减到规模。此时,您现在可以决定要对站点的表示层执行什么操作。您现在可以从众多可用的框架中选择(CFWheels,FuseBox,ColdBox,Mode-Glue)来移植表示层。

或者你可以说“哎呀”并从一开始就在CFWheels中重写整个事情:)

答案 5 :(得分:1)

如果您不使用版本控制,请在执行任何其他操作之前进行设置。能够退出破碎的重构是一种严肃的生活保障。之后我同意发布的内容。你会想要一次拿小块 - 分而治之。