每个人都希望自己的程序有效率,这无可厚非。就像我们每个人都希望自己能够漂亮一点儿一样。如果你是一个演员,漂亮对你来说至关重要。不过如果你是一个在荒岛上的程序员,那么很明显,能上网要比漂亮更有意义。希望程序有效率,这没有错,但是别忽视了应用环境。首先要问自己一个问题:“我的程序是否是时间敏感的?”
如果我用非常简单明了、直接的程序可以解决相应的问题,是否就不满足效率的要求了?千万别忘了,计算机干别的真不行,但是计算起来真的很快。
举例来说,一个包含一万个词的词典,满足用户基本的增加、删除和查找功能,你用最低效的数组和最高效的红黑树,对于最终的用户来说,根本感觉不到差别。
唯一的差别就是,对程序员来说,用红黑树实现,代码更多,开发周期更长,开发成本更高,代码更易出错。所以,在关注程序的效率问题之前,你首先要从面临的问题出发,问一问自己,效率是不是这个程序的瓶颈所在。完全不考虑对应的应用,只是在堆砌自己所学的知识,这个在《重构:改善既有代码的设计》[13]一书中有一个非常专业的称呼,叫“过设计”。</