实现流水化开发,需要使用“模块划分”的程序开发方式。如此,团队里的每个人负责某项\某几项特定的技术领域,在特定的技术领域更加专业。这样,每个人的效率更高。在专业的技能更熟练,更深入,也会提高队员的成就感。队员之间互相分享技术,还可以增加知识的涉及面。虽然,看似每个人只负责一个领域的功能,但是,通过共享知识,大家都掌握了更多、更深的知识。这一切,需要”模块划分“。

  模块划分怎么分?在APP的开发领域,原来的划分是分为MVC,即Model、View、Controller。Model负责业务逻辑、处理数据源和数据模型,View负责界面的布局,Controller负责交互和部分业务逻辑。但是我们实际开发的时候会发现,Controller往往还要负责界面的工作,用代码实现界面的布局。即使不使用代码来实现布局。Controller也往往负责了大多的业务逻辑。这就造成了程序的难以维护和升级,往往后续的工作要推倒重来,别人更是难以接手。

  就如同工厂有10个人,每一个人都独立生产一辆汽车。每个零件都自己来做,有些零件是多个零件焊接到一起,模子只能用这么一次,再造新的汽车需要一切重来。每个人的设计理念和零件的尺寸、性能都不一样。各个模块之间的稳定性、差异性都很大。这根本不是一个团队,也不是高效的工作方式。实际上,汽车的零件都是各个供应商分别生产的,都按照统一的协议进行,生产的东西就能组合到一起,每个供应商在各个领域都会越来越精。

  同理,APP开发也是这样。我们看到,往往很多软件开发团队会拖延工期。究其原因,五花八门。但是这种开发模式的混乱,往往是最根本的原因。每个人负责一个子系统的上下游所有功能的实现。比如开发一个人员列表子系统,从界面编码到交互设计;从网络请求到接口调试;从按钮样式到动画效果。几乎每个人都完成了一套系统,看似是划分成了”模块“,没人独立完成一个”模块“,实际上,每个系统都是”一辆汽车“。更为可笑的是,每个系统的样式、交互方式都会不同,甚至同一功能使用的类库都不一样。实现同样的功能,可以用了不同的类库;同样的类库,可能引用了不同的版本。这即浪费了资源、降低了效率,又导致程序的难以维护,错误百出。如果这样开发,不造成工期的延误是很困难的。何况,以后的开发不能引用以前的成果。真是痛心疾首,亲者痛、仇者快。

模块划分--MVVM指南(课程学习)的更多相关文章

  1. MVVM指南(课程学习)

    iOS MVVM 参考 iOS MVVM 前世今生 iOS MVVM 优缺点 下面是我对MVVM知识的总结,主要包括模块划分.开发步骤.重点解说三部分.做这篇文章,主要是考虑总结出可执行的开发步骤,按 ...

  2. 用c写的简单的日历(学习模块划分)

    简单日历 ​ 主要目的是学习函数模块划分,成品大概是这样,加了一些花里胡哨的东西(/▽\) ​ 分三个模块,主函数.c 显示.c 计算.c 与.h 文件 有两种实现方式,区别在于是否以数组在模块之间传 ...

  3. 201671010417 金振兴 实验十四 团队项目评审&课程学习总结

    项目 内容 软件工程 https://www.cnblogs.com/nwnu-daizh/ 作业要求 https://www.cnblogs.com/sunmiaokun/p/11095027.ht ...

  4. 201671030108后新莉+实验十四 团队项目评审&课程学习总结

    项目 内容 这个作业属于哪个课程 代老师博客主页 这个作业的要求在哪里 实验十四 团队项目评审&课程学习总结 作业学习目标 (1)掌握软件项目评审会流程:(2)温故知新自己的所得:(3)反思总 ...

  5. 201671010447 杨露露 实验十四 团队项目评审&课程学习总结

    项目 内容 这个作业属于哪个课程 2016计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验十四 团队项目评审&课程学习总结 作业学习目标 总结这学期软件工程学习获得 一 ...

  6. 实验十四 团队项目评审&课程学习总结

    项目 内容 这个作业属于哪个课程 2016计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验十四 团队项目评审&课程学习总结 团队名称 快活帮 作业学习目标 (1)掌握软 ...

  7. 201671010456-张琼 实验十四 团队项目评审&课程学习总结

    博文简要信息表 项目 内容 这个作业属于哪个课程 http://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu- ...

  8. 201671010402-陈靖 实验十四 团队项目评审&课程学习总结

    项目 内容 任课教师博客主页链接 https://www.cnblogs.com/nwnu-daizh/ 作业要求链接地址 https://www.cnblogs.com/nwnu-daizh/p/1 ...

  9. 201671030128周琳 实验十四 团队项目评审&课程学习总结

    项目 内容 这个作业属于哪个课程 2016级计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验十四 团队项目评审&课程学习总结 作业学习目标 掌握软件项目评审会流程:反思 ...

随机推荐

  1. 关于MyEclipse 半天打不开的问题(工作区间损坏)--转

    删掉 {workspace}/.metadata/.plugins\**\*.snap 所有的 .snap文件 一般可以解决问题 如果上面一步解决不了问题, 那么删掉 {workspace}/.met ...

  2. FusionCharts生成报表应用

    1.需要组装要展示的数据,至于如何怎样去设计数据模型,看你要展示的图形和需要的数据就行了.来个简单的. 实体类,只有两个属性,也可以使用Bean里面的实体类,无所谓了. package com.gol ...

  3. Java 六种异常处理的陋习(转)

    Java 六种异常处理的陋习 原文链接:  http://www.cnblogs.com/Android-and-android/archive/2013/05/02/3054469.html 你觉得 ...

  4. 将自己apk打包进其他apk安装思路

    把Apk 作为asset 资源编译进去,运行的时候释放出来再安装. dexclassloader加载. 动态加载. 把一个apk写成安装器,默认安装的话,需要root或者需要漏洞利用.

  5. c++中冒号(:)的作用

    1.冒号(:)用法 (1)表示机构内位域的定义(即该变量占几个bit空间) typedef struct _XXX{ unsigned char a:4; unsigned char c; } ; X ...

  6. 获取一个gridcontrol的数据行数

    ((DataTable)gc_excel.DataSource).Rows.Count;

  7. python之requests模块

    1.安装 pip install requests 2.基本用法 就是以某种HTTP方法向远端服务器发送一个请求而已 import requests r = requests.get('https:/ ...

  8. Windows Azure Table Storage 解决 Guid 查询问题

    在使用 Windows Azure Table Storage 的 CloudTableClient 对Azure 进行数据查询时,会发现在自定义类的Guid类型始终无法去成功查询出数据,对比发现 G ...

  9. openstack controller ha测试环境搭建记录(十二)——配置neutron(计算节点)

    在计算节点配置内核参数:vi /etc/sysctl.confnet.ipv4.conf.all.rp_filter=0net.ipv4.conf.default.rp_filter=0 在计算节点使 ...

  10. Cantor表 1083

    题目描述 Description 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 - 2/1 2/ ...