Php 什么时候从过程切换到OOP?
在大多数关于OOP的讨论中,都说它的优点是可重用性。。为了定义类,您需要做一些额外的工作,这样可以节省以后创建这些对象的许多实例和扩展的时间 这种情况的一个腐蚀性似乎是,在将所有内容写入对象的权衡与节省的时间相等之前,不应该从过程编程切换到面向对象编程Php 什么时候从过程切换到OOP?,php,oop,procedural-programming,Php,Oop,Procedural Programming,在大多数关于OOP的讨论中,都说它的优点是可重用性。。为了定义类,您需要做一些额外的工作,这样可以节省以后创建这些对象的许多实例和扩展的时间 这种情况的一个腐蚀性似乎是,在将所有内容写入对象的权衡与节省的时间相等之前,不应该从过程编程切换到面向对象编程 一般来说,什么时候是从过程编程切换到面向对象编程的好时机?是否有任何迹象/特征可以让您了解您的项目需要进行转换?如果它不是一个非常简单的应用程序,现在就是时候了。事实上,您应该始终使用OOly编程,这是有争议的,因为如果您将来想要扩展您的程序,这
一般来说,什么时候是从过程编程切换到面向对象编程的好时机?是否有任何迹象/特征可以让您了解您的项目需要进行转换?如果它不是一个非常简单的应用程序,现在就是时候了。事实上,您应该始终使用OOly编程,这是有争议的,因为如果您将来想要扩展您的程序,这将更加困难。我假设这个问题是从初学者的角度/范式出发的。一旦程序员有了编写面向对象代码的经验,您当然可以从一开始就使用这种体系结构来编写项目。事实上,我认为自上而下的方法可以为大型项目节省大量时间 不过,对于您概述的自底向上的场景,我认为您必须体验一下。一般来说,有关不同方法的更多信息,请参考维基百科文章 具体到PHP,我认为您可以使用这种方法进行迁移:
这个过程是了解OO的细节的一个很好的方法,最终你会看到它的好处。它还将告诉你我的初始观点:将某些东西转换为OO所需的时间要比从一开始就进行良好(高阶)设计所需的时间长得多。我认为这取决于上下文。对于使用现有OOP框架的图形应用程序,权衡是即时的——在某些上下文中,您必须不遗余力地编写程序化GUI代码
但是,如果您正在进行原始数据处理,并且没有与任何OOP框架进行互操作,则可能会发现OOP毫无意义。在项目中切换到OOP可能非常耗时。我怀疑它是否有利可图,因为它需要大量的编码、大量的测试,然后是大量的重构。OOP的整体概念不同于PP
因此,我建议不要在项目内切换,而是尽快开始在新项目中使用OOP。当您感到舒适时,您可以开始为现有项目考虑OOP设计,并逐步在OOP中实现功能。这将是一个很大的工作,虽然,它可能会觉得像重写整个项目。我会寻找其他地方的迹象,你需要切换。对于所有的宣传——我是OOP的大力支持者——OOP语言的代码重用通常只是稍微好一点 OOP是另一个帮助组织代码的简单工具,就像过去的函数一样。这是一个非常有用的工具。但是主要的好处是使编写和维护代码变得更容易
如果是我,转向OOP几乎需要完全重写,我会推迟,直到切换带来的更多实质性好处变得明显。如果你的代码有效,我不知道你为什么要重写它。这取决于任务,但在完成了这两项任务后,我会这样想:
当有疑问时,使用你喜欢的东西。改变正在进行的项目的编程风格很少是一件好事 如果您希望实体之间有更明确的责任,您可以始终将OO原则应用于过程代码
例如,检查ANSI-C中的OO编码,OOP不是“唯一的方法”,您仍然可以拥有组织良好的可重用代码,这不是OOP。但实际上,OOP是一种自然语言,它使事情变得更简单。PHP是一种混合语言。如果您只构建过程应用程序或所有面向对象的应用程序,那么您使用的是错误的,很可能会生成不符合标准的API。@马里奥:这很有趣。有关于这方面的阅读材料吗?@JonahBron:这里有一篇客观化的文章:-在这个问题上也有一些有趣的重复-IIRC也有一篇关于程序员的好文章SE@Tortoise:)从那时起,我对OOP的看法发生了重大变化;现在我认为OOP是一种推理程序,而不是编写程序。如果您只是处理10行批处理脚本或类似的脚本,当然,只需使用几行过程代码即可完成任务,但对于您打算使用一段时间的任何内容,其他人可能需要维护的内容,或任何重要的内容(超过100行左右的代码),我想说你最好投资oop。我不确定我是否同意你的观点。我见过许多想要的OO代码按照您描述的方式创建。不幸的是,它并不能让人理解OOP背后的主要原则。主要的一点是理解对象是什么,它能做什么,它不能/不应该做什么,等等