重构初学者经常会提到这个问题,特别是那些之前经常工作在一些对性能有要求的系统中的程序员。讲真,重构代码不考虑性能的行为是一种不负责任的行为。但话又说回来,很多时候,我们所从研发的业务系统,相比于代码可读性的问题,性能问题的优先级还处在比较低的位置。所以重构,要不要考虑性能,肯定是要考虑的,但不应该成为你一开始就要小心翼翼的地方。
除非你工作在对性能要求极为苛刻的系统,这种系统最关心首要问题永远是性能。在这种系统上,什么代码的可读性可能真的位居其次。抛开这种系统,回到大部分程序员工作的业务系统,在开发过程中,代码会随着需求的增长不断的变得复杂,就需要持续重构,否则系统如果只是简单的堆砌,很快就会面临理解的灾难。可能你以为我夸张了,就在我的训练营中,一个镶金玫瑰这样的不太复杂的需求,我见过将代码写得极为复杂的作业。在这种情况下,代码都没法阅读,别人都没信心看你的代码,你给别人说性能,意义大吗?
关于性能问题,如果是一些可预见性的性能问题的时候,就应该在一开始从技术上去规避,比如一些跨服务调用的第三方库,就需要更多提前考虑这些库在性能上的差异,能否满足系统要求。
更多的时候,是在开发过程中,当出现了一些隐蔽的性能问题的,需要停下来思考一下代码的重构方向了,有些时候,可读性和性能是相违背的,这就需要一些不一样的技术决策了。
总之,要不要考虑性能,要具体结合你所开发的系统的上下文,大多数业务系统,代码的可维护性的优先级往往高于性能问题,性能问题要考虑,也可以等到出现了性能问题的时候去做决策。至少在这之前,你应该让你的代码更容易被人理解。
你在开发过程中,遇到的性能问题多吗?你会怎么决策呢?
网友评论