公司内部关于模块化开发得培训

昨天下午研发部进行了模块化开发得培训,感觉讲得很好,当然真得做起来可能是困难重重。到底什么是模块化,我们引用一些概念:

  1. 将大的个体分解成多个小的个体;

  2. 独立的、闭合的去分析处理这个个体和其与外界的关系;

  3. 将这些个体组织、集成为一个新的大的个体;

  4. 持续的、迭代的进行这个过程直至解决问题。

下面列举一些要点和自己得理解。

1、模块划分和边界界定 这个说起来很简单,大家也经常在做。但是能真正划分清楚并且一直维持得,估计少之又少,大部分时候我们都会因为种种原因(主要是需求频繁变更,紧急需求过多)造成模块边界逐渐模糊,其实也很无奈。所以我们需要坚持原则,这个也需要项目团队自己来把控,坚决不能形成依赖环,这样整个项目得开发都会受阻。

话再说回来,到底应该怎么拆分模块,这个有很多方法,主要还是根据项目得实际情况来进行,但是有一个研究结果给出了一个参考值即200-400逻辑行可以视为一个模块得最佳大小(出自《UNIX编程艺术》),大家可以根据这些来准确拆分),原则也有一个:一个方法做且仅作一件事情,解决且只解决一个问题。

2、清晰得开发文档 文档大家都在说,也都在写,可是大部分项目组都不会维护一份清晰得开发文档,大家有得可能只是概要设计、需求文档、详细设计等等。我们在开发过程中很少会去记录文档,例如我们得接口设计、函数得依赖关系等等;尤其是函数得以来关系,如果这个搞不清楚,如果我们修改了某一个函数,那么我们就无法确定它得影响范围,程序就可能会存在隐形BUG。所以如果可能,我们需要维护一份清晰得开发文档,当然也可以称之为手册。

3、高内聚、低耦合 这个都说烂了,真正能做到得却没几个,但这真得很重要,所以坚持吧。 模块间得耦合主要存在于他们之间得依赖关系、包含关系、继承关系等。

4、可替换性、良好得接口设计、兼容性 模块化得好处之一就是每个部分都隔离,如果我们使用一些第三方库,当有更好得替代品出现时我们随时可以切换过去而不需要进行大规模得代码改动,这就时可替换性; 要具有可替换性就必须保证良好得接口设计,我们需要遵循几个原则:

  1. 不要再造轮子

  2. 最小立异原则

如果有成熟得产品并且功能跟我们需要得相似,那么用它吧,除非是有一些特殊情况。

如果我们要设计通讯协议、设计接口、设计配置文件、设计命令行参数,那么我们需要参照一些标准,避免出现自定义得特殊情况,这样可以减少很多得学习成本,也能最大限度利用现有资源(无需做什么改变,即可使用)。

良好得接口设计其实就包含了兼容性,一个API得升级应该尽量保证以前得功能不受影响,如果真有变动也需要保证2-3个版本之后再彻底变更。

培训过程时间很长,说得东西也很多,但是核心部分也就时上述这些。想用好模块化开发时需要开发团队集体努力得,也即需要达成一个最基本得一致,而且要长期坚持。

模块化开发得好处网上到处都可以找得着。

Published: October 20 2011

blog comments powered by Disqus