结构化编程风格排斥goto语句的使用,其主要目的是通过制度化令程序流程可控,从而逻辑清晰,简化程序代码的编写和调试。但这种制度是要付出代价的,那就是程序的速度必定受到影响,从重重if、while判断语句中逐个外退,每次都要比较、运算条件,肯定不如goto直截了当。因此,追求效率的意识形态者,总是喜欢把算法代码写在一个程序片段中而极力回避函数调用,其深层原因就是为此,因为函数调用是要开销的,循环次数多而反复调用函数,其损耗积累在这些人看来简直无法忍受。也就是说,他们本质上是抗拒结构化编程的,而面向对象所增加的开销,更是深恶痛绝,那些东西很可能令他们苦心积虑省下来的零点几毫秒化为乌有。
不时可以看到某些人写的代码,像strlen()这样极短的、极简单的循环函数,是不屑于调用的,宁愿直接把循环算法嵌入整体代码中(因为在外层还有数千万、上亿的循环罩着)。但人家库函数的编制团队之所以要为这类功能开辟函数并赋予一个有意义的名称,目的就是为了隐藏那个难以理解的循环,用名称就可以了解代码现在在干什么,这种函数的开销是值得的(结构化编程倡导哪怕只调用一次,但只要逻辑上它应该分离为函数,就毫不犹豫地把它写成函数)。但效率主义者不会这样做,他们写的程序,偏好直接在代码段中实现各种各样目的的循环,各种循环交叉混杂、纠缠在一起,效率确实是高的,但程序可读性却极差,他们的审美观不同,以晦涩难懂为美(看看六朝时代的骈文就找到感觉了)、以能人所不能为傲。这只能说是意识形态差异。
[
本帖最后由 TonyDeng 于 2011-11-23 00:01 编辑 ]