实现流水化开发,需要使用“模块划分”的程序开发方式。如此,团队里的每个人负责某项\某几项特定的技术领域,在特定的技术领域更加专业。这样,每个人的效率更高。在专业的技能更熟练,更深入,也会提高队员的成就感。队员之间互相分享技术,还可以增加知识的涉及面。虽然,看似每个人只负责一个领域的功能,但是,通过共享知识,大家都掌握了更多、更深的知识。这一切,需要”模块划分“。
模块划分怎么分?在APP的开发领域,原来的划分是分为MVC,即Model、View、Controller。Model负责业务逻辑、处理数据源和数据模型,View负责界面的布局,Controller负责交互和部分业务逻辑。但是我们实际开发的时候会发现,Controller往往还要负责界面的工作,用代码实现界面的布局。即使不使用代码来实现布局。Controller也往往负责了大多的业务逻辑。这就造成了程序的难以维护和升级,往往后续的工作要推倒重来,别人更是难以接手。
就如同工厂有10个人,每一个人都独立生产一辆汽车。每个零件都自己来做,有些零件是多个零件焊接到一起,模子只能用这么一次,再造新的汽车需要一切重来。每个人的设计理念和零件的尺寸、性能都不一样。各个模块之间的稳定性、差异性都很大。这根本不是一个团队,也不是高效的工作方式。实际上,汽车的零件都是各个供应商分别生产的,都按照统一的协议进行,生产的东西就能组合到一起,每个供应商在各个领域都会越来越精。
同理,APP开发也是这样。我们看到,往往很多软件开发团队会拖延工期。究其原因,五花八门。但是这种开发模式的混乱,往往是最根本的原因。每个人负责一个子系统的上下游所有功能的实现。比如开发一个人员列表子系统,从界面编码到交互设计;从网络请求到接口调试;从按钮样式到动画效果。几乎每个人都完成了一套系统,看似是划分成了”模块“,没人独立完成一个”模块“,实际上,每个系统都是”一辆汽车“。更为可笑的是,每个系统的样式、交互方式都会不同,甚至同一功能使用的类库都不一样。实现同样的功能,可以用了不同的类库;同样的类库,可能引用了不同的版本。这即浪费了资源、降低了效率,又导致程序的难以维护,错误百出。如果这样开发,不造成工期的延误是很困难的。何况,以后的开发不能引用以前的成果。真是痛心疾首,亲者痛、仇者快。