[置顶] 模块划分的原则及方法

首先解释一下 模块的概念,对客户端应用程序开发来说, dll(pe文件)是模块的表现形式;对web项目来说, 是模块的表示形式。

一、基本原则:
1. 模块功能要单一;
2. 新增功能时,尽量减少对已有模块的改动,在新增模块中实现功能;
3. 功能调整或修改bug时,影响的模块数量要尽可能少;
4. 功能调整或修改bug时,受影响的模块要尽可能的小(指客户端应用程序开发,比如dll文件);
5. 模块间要松耦合,模块接口尽可能少、并且简单;

二、划分方式:
1. 按功能划分;
2. 按层划分,持久化层(数据库访问层)、网络层、业务逻辑层、界面展示层;

三、划分方法:
1. 首先按 功能划分模块;
2. 根据功能特性多少,决定是否要划分 子功能模块
3. 功能模块内部,根据实际情况,决定是否需要 按层划分模块(从复用性、独立性角度考虑);
4. 在 代码级别,不同层必须分离,即一个源文件,只能负责一个层(界面、业务、网络等)的事情;
5. 如果涉及到较多的 第三方合作内容,将合作内容作为一个独立模块;

四、经验:
1. 通常来说,界面和业务逻辑是紧密关联的,业务又和网络紧密相连,所谓紧密关联,是指一个变了,另一个通常也会变,因此这3个层通常可以合并为一个模块;
2. 有些实用类,包括业务逻辑,需要在项目内共用,要提出来做为单独的模块;
3. 持久化层,如数据库访问层,通常需要不断调优、数据库表结构升级,这种变动需求通常与业务本身无关,因此可以将持久化层设计为单独模块;

五、FAQ:
【问】为什么模块要先按功能划分,再按层划分?
【答】相对于产品功能本身的变化,统一对某一个层面进行集中调整(比如网络层、界面层)的可能性不大,这一类调整通常是对原有技术方案的调整,影响很大,需要完整的程序和测试计划,这种情况出现时,必然会违背基本原则3,而与先功能划分,还是先按层划分没有关系。
原文地址:https://www.cnblogs.com/riskyer/p/3402473.html