以谁为基础

最近开发一个项目,有个预览功能,在USB插入时预览,在USB拔出时停止预览,而且预览需要2到3秒的时间。因为医学镜USB口连接不稳定,频繁收到USB插入拔出广播事件,导致频繁出现软件崩溃现象。
刚开始一直让sdk提供方查找解决问题,但是,他们解决了两周多,也没有彻底解决问题,仍然有崩溃现象。
直到突然想到,因为USB口连接不稳定,能不能做防抖动处理,在USB频率插拔广播时,减少预览次数。然后顺着思考,就保证USB插入时的预览流程完整走完,或者提前结束,才允许下一次预览流程开始,同一时间,同一个摄像头,只有一个预览流程在走,这样就避免了崩溃。

反思一下过程,为什么一开始没有想到这个解决办法。回想起来,刚开始的处理思路,一直以USB插拔为基础,USB插入预览,USB拔出停止预览,正确情况下,这样思考是没有问题的。但是医学镜连接不稳定,导致快速频繁地出现插入拔出广播,也就是说,前面的思考的基础是不可靠的,而思考问题应该以可靠的事物为基础,既然USB插拔不稳定,就不能完全依赖这个来实现软件的功能。依赖不稳定的事物实现的系统,肯定也是不稳定的!所以,既然发现USB插拔不稳定,就应该及时转变思路,重新寻找到稳定的事物,作为软件构建的基础。
如果没有稳定的事物,也可以以一个预期实现的正常的工作流程为基础,预览的正常的工作流程,也可以作为软件构造的基础。如果软件使用过程中的环境与这个基础冲突,就为基础为准,让不稳定的环境适应稳定的基础,这样得到的系统也是稳定的!

所以,这个问题就是一个以谁为基础来构造软件的问题。不能以不稳定的事物作为软件的基础,必须找到稳定的事物作为软件的基础,然后其它都围绕这个稳定的基础衍生,这样就能得到一个稳定的系统。如果一直执迷于以不稳定的现象为基础,而期望得到一个稳定的系统,会事倍功半,甚至无果。
同理,不仅软件开发,其它各种社会上的系统都适用这个道理。确保基础的稳定可靠。

你可能感兴趣的:(以谁为基础)