2009-02-09 27 views
2

我觉得需要将基于CF5的旧代码重构为CFC。我们在ColdSpring和Transfer中已经有了一些代码,但感觉ColdSpring的重写变得很大,而Transfer则毫无意义。将ColdFusion 5基于标记的代码重构为CFC

我打了什么提示,方法和陷阱。

我该如何使这容易?

我不介意让ColdSpring保留在组合中,但Transfer是我害怕项目大小的一点。

编辑:我的代码库已经进行了7 - 8年,是广阔的。描述这将是困难的,但是我正在寻找通用的方法建议

回答

4

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

如果你看看你的网站的哪些领域是1:最有可能发生变化,2:执行得最多,你可能会瞄准某些可能从变化中受益的领域,并看看它们如何容易地融入CFC基于框架的框架,还有什么好处但是对于大多数代码来说,如果它工作正常,可能没有迫切需要改变。

但是,无论何时您需要对系统的一部分进行重大更改,可能需要从面向对象的角度来查看并在适用的情况下移动现有代码。

1

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

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

+0

感谢您的支持。我已经编辑了这个问题,将其改为通用的建议,我会采取这种方法 – 2009-02-09 11:06:14

3

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

  1. 从输出中分割处理。我不能在这里实现真正的MVC,但至少我可以将视图移动到单独的模板(有时重用它们)并准备基本(模型)模板中的所有数据。
  2. 将所有重复的代码移动到组件中 - 这是最重要的提示之一。
  3. 将相关功能组合到组件中。假设所有客户相关信息分组到CustomerManager.cfc,发票纳入InvoiceManager.cfc等

为什么“波”?在一个大项目中,我不能坐下来重写所有与客户相关的代码。所以我已经一步一步来。例如,我必须从事客户注册工作,并将其扩展为几个属性。我创建了基本组件,移动了验证表单的方法(检查登录,电子邮件等)并添加客户 - 因此此页面以新风格工作。我需要改进发票页面,在那里我需要获得发票所有者的详细信息:我只是将方法添加到客户经理并摆脱直接查询。稍后编辑客户页面...也可以称为“按需重构”或不适用。

可以有额外的东西依赖于您当前的项目状态。但它对我很有帮助。希望你会发现这些提示有用。

1

我的建议是通过封装业务逻辑为氟氯化碳,而不用担心你的网站的整体表现层开始。

通过只是专注于业务逻辑,你就可以得到的最重要的功能集成到CFC和疏导维护的噩梦。将这些CFC“投入”现有网站也不会太难。

得到尽可能多的业务逻辑到氯氟烃后,你可以,你会发现巨大的怪物已经被削减到大小。此时,您现在可以决定要对网站的表示层执行什么操作。您现在可以从可用的多种框架(CFWheels,FuseBox,ColdBox,Mode-Glue)中自由选择以移植到表示层。

或者你可以只说“见鬼吧”,并从一开始:)

3

之前,你改变什么重写CFWheels整个事情:建立一套完整的回归测试!

重构时,将目标首先必须保存功能,这样你就不会直接影响你的客户。

我同意塞尔吉的波浪式的重构也 - 这可以让你打破东西成可管理的块,而不是一步到位做的一切。

但你拥有的任何方法,更多的回归测试,你可以创建,更好 - 这是真的,你可以确认你的唯一办法都没有意外更改的东西。

1

如果您没有使用版本控制,请在执行任何其他操作之前先完成设置。能够从破碎的重构中退出是一个严肃的生命保护程序。之后,我同意发布的内容。你一定会想要分小块 - 分而治之。