要开发手机软件平台,一定要已开始就要确立这个平台将来是要开放出去的目标,也就是说,开发的这点东西,将来应该是给外面的人继续开发的。
我参加的一个手机软件平台就贯彻了这一点,遵从OSGi协议(这是一个现在很多厂商组织都在支持的协议,Eclipse 3.x开始也支持这种协议了)。这样的一个好处就是整个团队(往往是几百人)都有一个统一的vision,当出现技术决策的时候,考虑的是,我们做的东西将来拿出去给别人开发应用的时候方便不方便,软件设计者始终心存未来的开发者,设计的结构和接口都趋于合理。我参加的另外一个平台开发就没有这么高瞻远瞩了,搞Architecture的从来就没有想过要把这个平台拿出去在业界广泛使用,实际设计者为了赶工,很多技术解决方案于是就是权益之计,日积月累,hard-code越来越多,整个code趋于腐烂。
软件平台开发是一个大工程,需要建构很多component,几百人一起协作,每个component的开发者如果想的是,这个component不光是要给线在的component用,将来还要给第三方用,API一定会定义的合理。相反,如果component之间的通讯都用hard-code的方式,那将是后患无穷,不光是产生的互相依赖造成配置管理的问题,更严重的是,API趋于不合理。听说过一个比方,API是潘多拉的盒子,实现代码是瘟疫,如果盒子没有定义好,瘟疫就会传染给别的模块。