c++ - 将遗留 C 代码重构为 MVC 设计

标签 c++ c model-view-controller

我正在处理一些旧的(比我年长的)C 代码,这些代码需要清理并更新,以便(除其他外)更容易维护并与当前代码更干净地集成。

现有代码相当凌乱,GUI逻辑与业务逻辑和数据访问逻辑随意穿插。唯一的优点是它不是意大利面条式代码,而且它是模块化的(正如 70 年代的大多数代码所趋向的那样)。

我的问题是:任何人都可以为我提供有关如何将代码重构为 MVC 的指南(顺便说一句,我在执行此任务时还将代码从 C 移至 C++ - 但这是我最不关心的问题,因为我对这两种语言都很熟悉)。

顺便说一句,我完全知道这不是一项微不足道的任务。我只想知道从混合 DBAL/BL/GUI 的模块化代码到更干净的 MVC 实现的步骤是什么。

最佳答案

我不相信会有一组明确的步骤,我们所做的将随着现有代码的结构而变化。

我同意@Jesus Ramos 的观点,即找出测试策略是这里的关键。您的问题很可能是代码目前不可单元测试,因为实际上没有“单元”,我们无法测试业务逻辑,比如说,不测试 UI。

我会非常认真地考虑重写而不是重构。

如果您要重构,那么我猜您将采用一种“瑞士奶酪”方法。钻出碎片,留下一个有很多孔的中心质量。因此,提取数据库访问代码,专注于提供清晰的 API 和数据对象集——这些将成为您模型的基础。将 GUI 代码拉出到 View 层中。剩下的是 Controller 逻辑,您可以对其进行重构。

关于c++ - 将遗留 C 代码重构为 MVC 设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6854765/

相关文章:

c - 为什么 'EINTR' 未声明?

javascript - Angular 导航 : Show different sub navigation for different views

javascript - 为什么我不能将 SailsJS 模型命名为与 MySQL 表相同的名称?

c++ - 基于 2D 图 block 的游戏,当我用相机放大时,图 block Sprite 之间会出现间隙吗?

c++ - 使用函数和数组从文件中读取和打印数据

c++ - 为什么显式模板实例化存在访问检查漏洞?

c - 在初始化 `float` 时转换为 `f` 和添加 `float` 作为后缀有什么区别?

c - %i 或 %d 更喜欢哪一个

java - Spring MVC : Dynamic 404 page

c++ - 使用对象参数声明函数