我正在阅读Source Making网站,特别是Refactoring部分.在描述长方法问题的页面上,出现以下语句:
较旧的语言在子程序调用中带来了开销,这阻碍了人们使用小方法.现代OO语言几乎消除了进程内调用的开销.
我只是想知道现代OO是如何做到这一点的,与"旧"方式相比如何呢?
我认为你对那个声明的旅行是明智的.这没有道理.
真的,我根本不相信这个说法.发生的事情是,CPU的速度非常快,比设计这些旧语言的速度快了一千倍.
计划也变得更加复杂.在这一点上,我们不关心"分支和链接"中涉及的(现在)微小的开销或者函数调用机制.我们有数百万像素的绘画,或者要访问的数据库,或者要提供的网络.在某种程度上,这些操作很昂贵.方法调用在噪声中.
使用C语言进行方法调用的开销要比使用任何现代语言要少得多.毕竟,现代语言有一个CLR或JVM或Ruby解释器,它首先用C语言编写.
但没关系.CPU足够快,可以在下周启动程序.重要的是保持(很大程度上是现在的OO)软件的层和层正常工作,现代语言帮助我们做到这一点,并使其更容易编写.
真的,它们更慢,而不是更快,因为这就是我们现在想要的方式.3倍的开销,1000倍的CPU速度,我们仍然赢得300,并拥有更好的语言.