在OO中重写中型应用程序

时间:2009-05-26 07:35:17

标签: php oop

我可以采用什么样的apraoches来重写相当大的程序性php 大约2000行代码应用程序作为oo应用程序。我应该尝试这样做,还是应该建立在现有应用程序之上?我在学习编程的时候写过它,现在我想扩展它。

4 个答案:

答案 0 :(得分:2)

没有银弹。但是,你可能比拿起这本书要糟糕得多: http://www.amazon.co.uk/Working-Effectively-Legacy-Robert-Martin/dp/0131177052

答案 1 :(得分:2)

我可能会执行以下操作,将应用程序转换为MVC:

  1. 确定每个功能的用途(是处理请求参数,输出数据,查询数据库吗?)
  2. 尝试通过将函数拆分为只执行其中一项操作的函数来重构执行上述所有操作的函数。
  3. 对于每个函数,尝试找到一个合适的顶级对象/类,它可以包含此函数作为方法

    function addUserRecord($dbHandle, $userData) {[...]} 
    // Becomes
    class User {
        private $db;
        public function addUser($data) {
            [...]
        }
    }
    
  4. 对于可从外部访问的每个单独的* .php文件,将其转换为相应控制器的操作:

      

    http://foo.bar.com/user/addUser.php //成为
       http://foo.bar.com/user/add-user

    对应的控制器,使用Zend_Framework

    class UserController extends Zend_Controller_Action {
        public function addUserAction () {
           [...]
        }
    }
    
  5. 将所有输出特定内容(例如回显)移动到视图中。

  6. 最难的部分可能是创建合适的模型,但它非常重要,并且将成为您应用的基础。

答案 2 :(得分:1)

如果您希望添加新功能或显着扩展应用程序,请随时改进现有代码库。始终检查代码比检查更好。但是重写一次并不是很好的时间利用。

编写测试证明现有遗留代码库满足了重要的业务需求,这对您也有帮助。然后,您可以在不破坏应用程序的知识中更改遗留代码。如果你确实破坏了什么,你会知道什么,大概是为什么,并且能够快速解决它。

答案 3 :(得分:0)

精心设计的 OOP的优势在于您的组件易于重复使用,并且简化了团队工作。然后Ant再次支持代码更简单,你知道在哪里,在OO你可以通过类名找到它。所以你决定是否需要它。有时更少 ......