从问题出发解决问题

我阅读了test driven development, 觉得这种从问题出发的分析和实现思路对于项目开发长期来看非常有效。 最近我又听了宋乐老师的关于机器人研发落地应当从场景出发的讲座,感觉有异曲同工的味道。 面对一个具体的问题,很多的时候我经常会去找一个高大上的解法,不知是因为搞学术的惯性思维,还是因为追求完美的癖好。 但是这样做表面看不出什么问题,实际上有可能陷入了一种误区,premature optimization。 如果真是进到了这种误区,后果就是花了很多的时间和精力,所获得的收益却很低。

例如,我写了一段C++代码,调试发现了问题A,然后我读代码,发现了一处

std::shared_ptr<Base> bp;
bp.reset(new Base());

然后我记得这样做效率不高,先改了再说

std::shared_ptr<Base> bp;
bp = std::make_shared<Base>();

又改了其他几个地方,再测还是有问题A。所以上面的改动基本就是premature optimization。 不但没有解决问题A,还有可能造了一个

为了避免这种误区,该怎么做呢?我觉得最重要的是要理解问题,越全面越好,越深入越好, 划定解决问题的范围,解决问题达到的目标,设定解决问题用的资源等。 然后再去寻找解决办法,并实施和测试,最后评估是否解决。 如有必要再重走这几个步骤。这几句话肯定是老生常谈了。 如果能将其实践,估计有核爆炸般的影响力。

Avatar
槐建柱
机器攻城狮

从事的领域包括用于平面运动机器人的多传感器标定、融合里程计、建图与定位。

comments powered by Disqus