提问人:Pekka 提问时间:11/16/2009 最后编辑:CharlesPekka 更新时间:12/25/2012 访问量:367
编写适合重构的 PHP 代码
Writing refactoring-friendly PHP code
问:
据我所知,并且从其他 SO 帖子中收集到的信息,目前还没有合适的工具来重构 PHP 代码,所以当涉及到重构时,对于我们大多数人来说,这可能是很好的旧搜索和替换,并且有大量的祈祷我们没有忽略某些东西。
我想知道是否有任何关于如何编写代码友好以进行手动重构的编码建议。永远不要从字符串构造变量名称,这将是我想到的一件事,因为像这样的构造是不可能 grep 的:
$object->{"field_".$fieldname}
我可以想象有几个这样的该做和不该做。也许有人知道关于这个问题的好资源/文章。它也不必是特定于PHP的。
答:
5赞
John Paulett
11/16/2009
#1
单元测试总是帮助我确定由于重构而破坏代码的地方。动态语言(PHP、Ruby、Python 等)中的单元测试提供了帮助,而其他语言(Java、C#)中的静态类型通常可以让您更安全地进行重构。
评论
0赞
Pekka
11/16/2009
当然可以。但我认为这是一个不同的问题,我现在想更多地关注代码编写方面。
0赞
John Paulett
11/16/2009
@Pekka,我绝对明白你在说什么,不幸的是,除了 grep/sed/awk 之外,我几乎没有什么可以提供的。但是,我担心缺乏好的前期重构工具,意味着在动态语言中处理重构的唯一有效方法是全面的测试套件。
0赞
wallyk
11/16/2009
#2
你的问题有一定的道理。但是,与此同时,它意味着已知该实现是不充分的,并且被编写为要替换。为什么不在第一时间就正确地构建它呢?
评论
3赞
Pekka
11/16/2009
您无法为以后可能遇到的项目的每一种可能性或需求进行计划,并深刻改变其结构。你从漂亮、干净的代码开始,但如果你不注意,在几个版本之后,你就站在一团糟的前面。根据我的经验,在必要之前不断进行重构是防止这种情况发生的唯一方法,而且做得太少了
2赞
Jonathan Fingland
11/16/2009
没有任何决定是最终的,因此即使您的架构满足今天的需求,也不能保证它明天会满足需求。围绕易于维护进行规划是一种很好的方法,这比假设您的代码库将永远以当前形式存在要好得多。
0赞
DarthVader
11/16/2009
但是你应该把它规划成可扩展和可维护的,不是吗?这可以通过松耦合、高内聚和分层应用来实现。
1赞
DarthVader
11/16/2009
#3
那么,编写重构友好代码的最好方法是编写松散耦合的、高度内聚的代码和面向对象的代码。
你应该尽可能多地尝试抽象,毕竟抽象是编程时的关键词。
此外,您应该将代码分层到表示层、业务层、数据层等。使用设计模式是一个非常好的解决方案。
我建议你读马丁·福勒(Martin Fowler)。
0赞
Cryophallion
11/16/2009
#4
首先,确保变量名称有意义。如果可能的话,尽可能地进行 OOP,或者至少保持一切井井有条(图像函数文件、数据库文件等)
其次,这很方便,请检查您的 IDE。Netbeans 提供了重构选项。您可以在文件、文件夹、项目等中进行搜索。
3赞
Ken
2/3/2010
#5
尽可能避免魔法:变量、求值、用 @ 屏蔽错误以及在数据库中存储代码会回来咬你。
评论