编写易于重构的PHP代码

5
据我所知,以及从其他SO帖子中收集的信息,目前还没有适用于重构PHP代码的合适工具,因此,对于大多数人来说,重构可能只能使用老式的搜索和替换方法,并且需要祈祷我们没有遗漏任何东西。
我想知道是否有任何编码建议可以编写友好的手动重构代码。例如,永远不要从字符串构造变量名称,因为这样的结构是无法进行grep的:
$object->{"field_".$fieldname}

我可以想象有很多这样的注意事项。也许有人知道关于这个问题的好资源/文章。它不一定要特别针对PHP。

5个回答

5

单元测试总是能帮助我找到因重构而破坏代码的地方。在动态语言(如PHP、Ruby、Python等)中,单元测试可以提供帮助,而在其他静态类型语言(如Java、C#)中,静态类型通常可以更安全地进行重构。


是的,绝对可以。但我认为这是一个不同的问题,我想暂时更加集中于代码编写方面。 - Pekka
@Pekka,我确实明白你的意思,但不幸的是,除了grep/sed/awk之外,我没有什么可以提供的。但是,我担心缺乏良好的前期重构工具意味着在动态语言中处理重构的唯一有效方法是全面的测试套件。 - John Paulett

3
尽可能避免使用魔法:变量变量、eval、用@掩盖错误和在数据库中存储代码。这些都会给你带来麻烦。

1

编写易于重构的代码的最佳方法是编写松耦合、高内聚和面向对象的代码。

尽可能多地使用抽象化,毕竟抽象化是编程的关键词。

此外,您应该将代码分层为表示层、业务层、数据层等,并使用设计模式是一个相当不错的解决方案。

我建议您阅读Martin Fowler的著作。


0

你的问题有一定的道理。但是——同时——它意味着实现已知不足,写成了可以被替换的形式。为什么不一开始就正确地设计架构呢?


3
你无法为项目可能在以后遇到的每种情况或要求做出完美的计划,并深度改变其结构。你从良好、干净的代码开始,但如果你不小心,在几个版本后,你会发现自己面对一片烂摊子。根据我的经验,持续重构在必要之前是唯一防止这种情况发生的方法,而且很少有人这样做。 - Pekka
2
没有决定是最终的,所以即使你的架构今天符合要求,也不能保证明天仍然符合要求。围绕易于维护进行规划是一个好方法——比假设你的代码库将永远以其当前形式存在要好得多。 - Jonathan Fingland
但是你应该计划使其具有可扩展性和可维护性,对吧?这可以通过松耦合、高内聚和分层应用程序来实现。 - DarthVader

0
首先,请确保您的变量名称有意义。如果可能,尽可能采用面向对象编程,或者至少保持一切有组织(图像函数文件、数据库文件等)。
其次,这非常方便,请检查您的IDE。Netbeans具有重构选项。您可以在文件中、文件夹中、项目中等搜索。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接