在编写PHP代码时,混合使用面向对象风格和过程风格是否可以接受?


Is it acceptable to use a mix of object oriented style with procedural style in coding PHP?

所以以前我总是习惯用过程式的方式来编码php,比如:

mysqli_connect

mysqli_prepare

现在我不小心开始把它们混在一起,我会这样做:

mysqli_connect();

是过程式的,然后是下一个命令:

$mysqli->prepare();

是面向对象的样式。

我的代码仍然工作,但如果我看一下php.net,无论何时它显示的例子,整个例子是面向对象或过程。所以我问我是否可以同时使用对象和过程php代码。提前感谢!

虽然如何编码完全是你的决定和独特的风格,但我想说,在决定是过程式、面向对象还是混合式时,有几个因素需要考虑。

程序规范-

首先,如果你在一个团队中,为别人编写程序,或者遵循你自己的规范,考虑是否已经做出了选择。

可用性- - - - - -

让我们面对现实吧。有时候,最好的库要么是面向对象的,要么是面向过程的,而不是两者都有。在这种情况下,改变一种风格将需要使用完全不同的库,或者自己构建一个类或函数库。可用的库可以节省您的时间,唯一的补偿成本是主要面向对象程序中的过程函数,反之亦然。

熟悉

与可用性类似,您可能更熟悉某个类或函数集。虽然您可能有时间停下来学习一个新的类模块来添加到您的知识中,但您可以通过使用已经学习过并经过彻底测试的过程库来节省时间。因此,如果您在一个时间轴上工作,您可能想要使用更熟悉的库。但是,如果您正在研究和学习,那么您可能需要花时间阅读文档,安装和测试新的解决方案。

数据处理和速度-

另一个需要考虑的因素是你如何处理数据。如果数据在类中,则类可能具有对数据进行操作的方法。在这种情况下,过程编程需要从类或对象中获取数据,对数据进行操作,然后更新对象。在我看来,一个更好的设计应该是在对象中包含函数。

但是,如果所有的数据处理都在类之外,那么使用函数可能更快。如果想使用类方法,就必须加载类,并可能创建一个对象。甚至静态方法也可能比函数慢。因此,如果要考虑速度,例如在循环中,那么要考虑程序和PHP要经过多少步骤才能到达函数、类或对象。

展望未来-

如果你想在过程编程和面向对象编程之间做出选择,那么试着预测哪一种在未来最有用。我发现面向对象编程对于创建可重用代码非常有用。我发现过程编程对于命令行代码以及组织和使用对象非常有用。随着计算机科学的发展,这些可能会保持不变,因此我以前所做的工作更有可能再次有用。

相反,一些库和编程语言可能鼓励一种风格。PHP支持这两种风格。但是,如果我的总体印象是准确的,那么PHP一直在朝着面向对象风格的方向发展。如果在PHP函数和对象之间进行选择,请查看函数是为哪个版本的PHP创建的。还要检查是否有任何程序功能贬值或将要过时。如果是这样,请使用面向对象的方法,因为这将使您的程序在不再支持这些过程函数时更有用。

希望这提供一些考虑。谢谢。

两者都使用不会破坏你的代码,从技术上讲"ok",但要考虑你或其他人将来对应用程序的维护。如果代码是一致和干净的,那么阅读代码会容易得多,并且您将通过选择并坚持使用一个代码(最好是OOP)来节省大量时间。

更糟糕的事情发生在编码的世界里。有些人会说这是完全错误的。而其他人只会得到报酬,并对代码的工作感到高兴。这完全取决于你想成为什么样的程序员。

http://www.codingconfessional.com/

http://pragprog.com/the-pragmatic-programmer