我已经用程序样式完成了一个PHP的13000+行的项目[因为我对此非常熟悉,尽管我知道OOP],并且该项目运行得很好。
但是我应该将其转换为OOP吗?[ 因为世界上正忙着OOP ]
我的代码不需要OOP的任何功能[封装,基本上是继承...]!
所以我该怎么做?
如果将其转换为OOP,将会获得什么样的帮助?
我已经用程序样式完成了一个PHP的13000+行的项目[因为我对此非常熟悉,尽管我知道OOP],并且该项目运行得很好。
但是我应该将其转换为OOP吗?[ 因为世界上正忙着OOP ]
我的代码不需要OOP的任何功能[封装,基本上是继承...]!
所以我该怎么做?
如果将其转换为OOP,将会获得什么样的帮助?
Answers:
我的代码不需要任何OOP功能
您已经回答了自己的问题-如果在这种情况下不需要OOP 并且您的项目正在运行,请不要进行转换。
但是,您应该考虑将OOP用于下一个项目-但前提是适当的时候。
只要在适当的地方使用程序,程序编程就没有本质上的错误。
不,不仅仅是因为您不需要OOP。
如果您的程序已经完成并且可以令人满意地工作,那么在90%以上的时间中,无论出于何种原因,都要浪费时间重写完成的代码。
OOP并非功能强大,在很多地方都不应该使用OOP,所以不要仅仅使用OOP,因为OOP是趋势。
我对范式的一般理解(以及为什么三个主要范式都不是正确的编程方式还是错误的编程方式):
当您遇到一个在较高层次上很简单的问题(尽管在较低层次上可能很复杂)并且想要编写相应的简单线性代码时,过程编程非常有用。如果不需要在任何地方进行强大的去耦,则可以说比OO和功能更容易编写和理解。示例:一旦使用OO或函数分解了内容,数字代码,大多数小笔录,大多数小子问题。
当您需要强烈分离关注点时,面向对象的代码是很好的选择,因为您可能有多个关注点的实现。示例:大多数大型商业软件。例如,您可能希望将业务逻辑与表示逻辑强烈分离,因为它们可能需要独立更改。
当您需要将机制与策略强烈分离时,函数式编程非常有用。具有接受策略功能的机制功能是一个很好的模式。(我通过查看D编程语言的std.algorithm模块了解了这一点。)在策略和机制代码之间的边界上抽象出可变状态通常会使API易于推理。如果可变状态在任何一个中私下使用,则这是一个实现细节。出于不言而喻的原因,函数式编程的另一个优势是并发性。
仅当有明确指示需要OOP时,才应将项目转换为OOP。可能发生这种情况的可能性是(其他):
即使在这些情况下,也仍然没有必要将您的项目转换为OOP。
如果您回想一下为什么发明OO的原因,您会发现根本不需要 OOP,但是有时它会使您的生活变得更加轻松。
早在C编码的年代,一个非常大的程序可能变得非常凌乱,并且很难继续使用。因此,他们发明了将其拆分为模块块的方法。OOP采用这种方法并使它更加模块化,将数据与程序逻辑的这些块一起放置,从而使它们与其余代码更加分离。
这样一来,您就可以编写越来越大的程序,并且可以确保将一个庞大的任务变成了一百个鼠标大小的任务。额外的好处是您可以使用其中的一些“老鼠”,并将其在其他程序中重复使用!
当然,现实世界并非如此,对象重用从未像预期的那样流行,但这并不意味着它是一种无用的范例。
没有用的是过分依赖两种编码方式。用一千个很小的,无关紧要的类进行OO的人并没有真正做到这一点-他们正在为自己(或其他人)做维护的噩梦。任何编写只有三个功能的程序应用程序的人也会使生活变得艰难。最好的方法是在中等地面的大型对象(有时称为组件,这是我们曾经想去过的地方),它可以提供大量独立代码和数据,并且很有可能被重用与您的应用程序其余部分隔离。
下次我的建议是:尝试编写常规的过程代码,但创建主数据结构的单个对象。看看如何使用它比在函数之间传递数据要容易得多。