1,要考虑远程升级,现场升级成本太高,所以要做好一个远程升级的模型,不过一般是针对大的产品。
2,如果是提供接口给外部使用,则函数必须判断输入值,因为你不知道别人会输入什么东西。
3,驱动是最重要,也是最不稳定,同时也是最不被重视的环节,我们公司就注重高大上,投入大量的人力去开发应用产品,而不注重驱动这类最基础最重要,结果就是整天不是这个问题就是那个问题,说白了就是驱动没有搞好。
4,程序大了,架构必须做得好,否则举步维艰。而这个通常又是最难的,不然就没有架构师这个高大上的职业的存在了。
5,通常产品都有一个基本形态,然后附加上各种各样的功能,形成不同的产品。这里牵扯到架构的问题。在设计基本功能平台的时候一定要考虑多个功能扩充的问题,具体表现为,每个功能组件之间不允许相互访问,只能访问基本平台提供的API接口,这样就断开耦合性。不要使用 #define 来区分不同的功能,这样会引起每个不同功能产品都需要重新编译,重新测试,老化,效率非常的低。应该采用 probe的形式,系统启动的时候确定哪些模块是可用的,这个配置可以通过一个配置文件。所以配置不同的文件之后就能使用不同的功能了。基本平台,功能组件都可以独立做验证,这样稳定性很好。