在xxx工作的一年多时间,最大的感悟就是写代码时要有把功能模块化的思想,将大的功能分成一个个小模块,方便多人协同工作,也方便问题的查找。然后要好好考虑所写的代码的可移植性(最重要)和可维护性。
可移植性:在实现某功能代码时,要好好考虑此功能代码是否可以移植到其它产品中,以后可减少大量可重复性的工作。把实现此功能代码所依附的函数接口提取出来(不同平台可能不一样,如延时函数、获取系统ticks、发送接收接口等)整合到一起,方便移植时更改代码;把外部需要用到的数据展示出来,方便外部引用。
可维护性:在写软件代码时先把调试口实现,写代码时在重要位置写好打印数据,方便以后代码的调试和问题查找。还可借助工具,如CmBacktrace 工具,死机时可帮助定位问题的大致位置。
最终产品卖到用户手中,所做的事情才真正产生价值。作为一个产品,产品的售后问题也是非常重要的,要多考虑产品在使用过程中问题的快速定位及解决,不断优化产品,这样才能在同质化的产品中建立优势。还需考虑在解决问题的过程中客户是否能做一些容易的操作来帮助解决问题。根据这些问题,产品需要实现如实现远程升级(减少人力成本)、关键日志保存到flash(方便日后定位问题)、实现远程维护(远程获取产品信息、产品本地记录的数据)这些基本辅助功能,这些在有网络情况下可远程操作来定位问题,解决问题及更新程序,减少人员到现场的维护成本。当然也要考虑没网络情况下怎么定位问题,如用预留的调试口来获取日志信息
在做产品开发时,可以参考这个经典的v模型的步骤