当前位置:  开发笔记 > 编程语言 > 正文

用于清理垃圾PHP的工具

如何解决《用于清理垃圾PHP的工具》经验,为你挑选了1个好方法。

我刚刚继承了一个70k的PHP代码库,我现在需要添加增强功能.我看到更糟糕,至少这个代码库使用MVC架构并且面向对象.但是,没有模板系统,许多类都被弃用 - 只被调用一次.我想我的方法可能如下:

    查找实时服务器上48小时内未触及的所有文件,并将其作为删除的候选对象(幸运的是有一个实时服务器).

    实现模板系统(Smarty)并尝试在模板中查找重复的代码.

    很多方法都复制并粘贴了代码......我不知道我有多想弄乱它.

我的问题是:我应该采取哪些步骤,或者你会采取什么措施?你处理这个问题的方法是什么?有没有工具可以帮助找到重复的PHP代码?



1> Alan Storm..:

查找实时服务器上48小时内未触及的所有文件并将其作为删除的候选项(幸运的是有一个实时服务器)

通过"触摸"我假设您将统计文件以查看它是否已被系统的任何部分访问.我要花一个半月而不是48个小时.在较旧的PHP代码库中,您经常会发现存在大量代码,每周一次或每月一次通过本地cron作业调用,或者第三方定期将其作为伪服务远程调用.通过等待6周,更有可能捕获所有被调用的文件.

实现模板系统(Smarty)并尝试在模板中查找重复的代码.

为什么?严肃的问题,是否有理由实施模板系统?(非PHP精明的设计师,通过在视图中包含太多逻辑来帮助您解决问题的开发人员,或者您是创建模板的人,并且您知道您在智能方面比在PHP中工作更快).如果没有,请避免使用PHP.

另外,实现纯智能模板系统有多现实?我认为像这样的旧PHP系统会有大量的"业务逻辑"与他们的观点混合在一起,而这些观点无法用纯粹的智能实现,如果你允许混合的PHP/Smarty你的开发人员会使用每次PHP.

很多方法都复制并粘贴了代码......我不知道我有多想弄乱它.

我不知道任何开箱即用的代码分析工具,但是可以使用tokenizer功能进行操作.

你应该做什么

我不想劝阻你或使你士气低落,但你为什么要清理这段代码呢?现在它正在做着应该做的事情.愚蠢,但它正在做.每个重新分解项目都会将当前的,未记录的,可能是业务关键的功能置于风险之中,并且在该项工作结束时,您有一个完全相同的应用程序.它是70k行的听起来像伪劣的代码,只有你关心修复,没有其他人告诉你他们的优先事项.如果他们的优先级是干净的代码,他们的代码就已经很干净了.一个人无法改变文化.除非有一个直接的业务案例要清理该代码(将项目作为业务战略开源?),否则遗留代码不会随处可见.

以下是使用旧版PHP应用程序时要考虑的一组不同的priorties

    是否存在单个数据库对象或对象对,允许开发人员轻松地为读取(从属)和写入(主)设置单独的连接.许多遗留PHP应用程序将在单个页面调用中实例化到同一数据库的多个连接,这是性能的噩梦.

    是否有一种直接的方式让开发人员避免SQL注入?为新代码(参数化SQL)提供此代码,并考虑修复旧SQL以使用此新方法,还要考虑可以在网络级别执行的安全性步骤.

    获取包含所有遗留代码的某种测试框架,并将其视为黑盒子.使用这些测试来创建一个集中的API,开发人员可以使用它代替无数的函数调用和复制/粘贴他们一直使用的代码.

    为配置值开发一个集中式系统,大多数遗留PHP代码是定义和类常量的一些可怕组合,这意味着任何配置更改都意味着代码推送,这意味着潜在的DOOM.

    开发一个连接到源代码控制系统的lint,为所有新代码强制执行代码健全,不仅仅是为了样式,而是为了确保业务逻辑不在视图之外,SQL以安全的方式构建,那些没有使用旧的复制/粘贴库等.

    开发一个理智的,可跟踪的构建和/或推送系统,阻止人们对生产中的代码进行hackin

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有