代码之家  ›  专栏  ›  技术社区  ›  Stewart Robinson

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

  •  2
  • Stewart Robinson  · 技术社区  · 15 年前

    我觉得有必要将我以前基于CF5的代码重构成CFC。我们已经在ColdSpring和Transfer中编写了一些代码,但觉得对ColdSpring和Transfer进行大量重写是毫无意义的。

    我会找到哪些技巧、方法和窍门。

    我怎样才能让这变得容易?

    我不介意让ColdSpring参与进来,但就项目规模而言,我最害怕的是转会。

    编辑:我的代码库已经运行了7-8年,而且非常庞大。要描述它是很困难的,但是我正在寻找关于方法的一般性建议

    6 回复  |  直到 12 年前
        1
  •  4
  •   Jeremy French    15 年前

    然而,每当您需要对系统的某个部分进行重大修改时,从面向对象的角度来看这一点,并在适用的情况下移动现有代码可能是值得的。

        2
  •  3
  •   Patrick McElhaney    15 年前

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

    1. 将相关功能分组为组件。例如,所有与客户相关的信息都归为CustomerManager.cfc,发票归为InvoiceManager.cfc等。

    为什么要“挥手”?在一个大项目中,我不能坐着重写所有与客户相关的代码。所以我必须一步一步地做到。例如,我必须处理客户注册,用很少的属性扩展它。我已经创建了基本组件,将验证表单(检查登录名、电子邮件等)和添加客户的方法移到了那个里,所以这个页面以新的样式工作。我需要改进invoice页面,在这里我需要获得invoice owner的详细信息:我只需将方法添加到customer manager中,而不用直接查询。稍后编辑客户页面。。。它也可以称为“按需重构”或smth。

    根据您当前的项目状态,可能会有其他内容。但这对我帮助很大。希望你会发现这些提示很有用。

        3
  •  3
  •   Peter Boughton    15 年前

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

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

    但是不管你有什么方法,你能创建的回归测试越多越好——这确实是你能确认你没有无意中改变某些东西的唯一方法。

        4
  •  1
  •   Tomalak    15 年前

    在不知道任何代码的情况下,要回答这个问题是非常困难的(几乎是不可能的)。

        5
  •  1
  •   rip747    15 年前

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

    通过专注于业务逻辑,您将能够将最重要的功能引入CFC,并减轻维护的噩梦。在你现有的网站上“加入”这些氟氯化碳也不会太难。

    在将尽可能多的业务逻辑引入CFC之后,您会注意到这个巨大的怪物已经被缩小到了一定的规模。此时,您可以决定如何处理站点的表示层。现在,您可以自由选择多种可用框架(CFWheels、FuseBox、ColdBox、Mode Glue)在表示层上进行移植。

    或者你可以说“见鬼去吧”,然后从一开始就用CFWheels重写整个过程:)

        6
  •  1
  •   Nick Van Brunt    15 年前

    如果您不使用版本控制,请在执行任何其他操作之前先进行设置。能够从中断的重构中恢复过来是一个重要的救命稻草。在此之后,我同意已经发布的内容。你会想一次处理一小块——分而治之。