当更多对象意味着更多的实现时间时,为什么人们鼓励在java中有更多的类?

时间:2016-12-26 08:50:18

标签: java oop memory-management

我知道在堆中查找对象比在堆栈中查找对象更耗时。我也看到人们建议为不同的任务创建更多的课程。如果有更多的类,可能是代码可以更容易理解和清理。但是,时间呢?任何人都可以向我解释。

3 个答案:

答案 0 :(得分:3)

面向对象编程意味着更多的关注点分离和良好的概念隔离。

它试图解决更接近我们思维方式的问题。现实世界有无数的物品和东西。每个人都有一个定义和属性,以及行为。

显然,面向对象的编程可能会使用更多内存甚至CPU功率,但是在20多年前,每个人都认为,一旦计算机原始功率和内存每年都在增加,优化仍然很重要,但生产力成为优先考虑

仍有一些极端情况,面向对象编程不是答案,但世界上几乎所有的商业或家用应用程序都是使用面向对象编程开发的,因为公司希望简化维护性并且能够以有意义和富有成效的方式应对变化(做更多事情并降低成本)。

答案 1 :(得分:0)

您的代码通常是解决问题的方法。类的数量不是您预先确定的。这取决于要解决的问题的复杂性和解决方案的复杂性。如果您的代码的存在只是为了找到第n个斐波那契数字,那么代码可能只存在于一个类中(或者根本没有),但是如果您的代码是一个旨在解决的企业软件像银行业这样复杂的问题,有很多因素决定你的设计,从而决定课程的数量。两个最重要的因素是代码的可维护性和可扩展性。

您应该看看面向对象设计的SOLID原则,首先由Robert C. Martin命名。

一旦你完成了OO设计,我希望“更多课程与更少课程”不会成为你的问题。

答案 2 :(得分:0)

我认为这不是为了提高性能而做出的决定,而是在运行时恕我直言的差异。我认为发展时间不会有太大差异。我认为在这里理解的重要是the Single Responsibility Principle。所以我认为标准不是“创建更多的类”,而是“不要为两个不同的东西使用相同的类”,(最终会让你创建更多的类,但不一样)。

我在工作的时候已经意识到,当系统成长时,最重要的是它是如何做到的。如果创建较少的类,最终会得到30k行类,这些类完全不可能有效地进行调试。这同样适用于400线方法做20种不同的事情。这意味着浪费了大量额外时间,因为添加新功能和修复现有功能变得越来越复杂。最后,您需要应用某个标准来分隔您的代码并避免最终结果,单一责任原则似乎是一个好的原则。