jed*_*ung 5 oop optimization unit-testing class premature-optimization
我在StackOverflow上看到(并搜索过)关于过早优化的很多问题 - 街上的字是,它是所有邪恶的根源.:PI承认我经常犯这个罪; 我并没有真正以代码易读性为代价来优化速度,但我会使用似乎更适合任务的数据类型和方法以逻辑方式重写我的代码(例如在Actionscript 3中,使用类型化Vector而不是无类型数组对于迭代)如果我可以使我的代码更优雅,我会这样做.这通常有助于我理解我的代码,我通常知道为什么要进行这些更改.
无论如何,我今天在想 - 在OOP中,我们推动封装,试图隐藏实现并提升界面,以便类松散耦合.我们的想法是制作一些有用的东西,而不必知道内部发生了什么 - 黑匣子的想法.
因此,这是我的问题 - 尝试在类级别深入优化代码是明智的,因为OOP促进了模块化?或者这是否属于过早优化的范畴?我想,如果你使用一种容易支持单元测试的语言,你可以测试,测试和优化类,因为它本身就是一个接收输入并生成输出的模块.但是,作为一个编写代码的人,我不知道等待项目完全完成以开始优化是否更明智.
供参考:我以前从未在团队中工作过,所以对于有这种经历的开发人员来说显而易见的事情可能对我来说很陌生.
希望这个问题适合StackOverflow - 我没有找到另一个直接回答我的查询的问题.
谢谢!
编辑:思考这个问题,我意识到"剖析"可能是正确的术语,而不是"单元测试"; 单元测试检查模块是否正常工作,同时分析检查性能.另外,我之前应该问过的问题的一部分 - 在创建它们之后对各个模块进行概要分析,而不是在应用程序完成后减少时间分析?
我的问题源于我正在尝试的游戏开发 - 我必须创建应该以最佳方式执行的模块,例如图形引擎(它们是否会是一个不同的故事:D).在性能不太重要的应用程序中,我可能不会担心这一点.
确实,我认为优化应该作为最后的任务(尽管在编写初稿时认识到您可能需要返回并优化的地方是有好处的)。这并不是说您不应该迭代地重构事物以保持代码的顺序和整洁。也就是说,如果当前某些东西达到了目的并且没有破坏应用程序的要求,那么应该首先解决这些要求,因为最终它们是您负责交付的(除非要求包括最大请求时间或类似的东西)。我也同意 Korin 的方法论,如果时间允许,首先构建功能,然后优化您的内心内容(或理论极限,以先到者为准)。