607
社区成员




教材3.2节“软件工程师的思维误区”中提到其中一个误区是过早优化,但我有些不理解。书中指出“一个复杂的软件似乎很多模块都可以变得更好。一个工程师在写程序的时候,经常容易在某一个局部问题上陷进去,花大量时间对其进行优化;无视这个模块对全局的重要性,甚至还不知道这个“全局”是怎么样的。这个毛病早就被归纳为“过早的优化是一切罪恶的根源。”
为什么过早优化的后果会严重到成为“万恶之源”?
书中提到“ 一个复杂的软件似乎很多模块都可以变得更好。一个工程师在写程序的时候,经常容易在某一个局部问题上陷进去,花大量时间对其进行优化;无视这个模块对全局的重要性,甚至还不知道这个“全局”是怎么样的。这个毛病早就被归纳为“过早的优化是一切罪恶的根源。” ” 通过查找资料,了解了克努特优化原则。这一点在我平时绘画的时候深有体会,如果注重于扣某个细节,而忽略了整体结构的话,不仅耗费大量时间,而且成果从整体上来看也是丑陋的。简单来说“ 过早优化是有问题的,因为它会导致你浪费资源,气馁,在你没有足够的信息时采取行动,或者陷入次优的行动过程中。 ”
例如你写一个大型软件, 在开始的时候, 你就优化一个排序算法, 花了很长时间,效率提高了 50%, 但是这个部分只影响全局 10%, 这么说, 你只提高了全局的 5%, 而且耽误了很多其他模块。