zoukankan      html  css  js  c++  java
  • [置顶] 模块划分的原则及方法

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

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

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

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

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

    五、FAQ:
    【问】为什么模块要先按功能划分,再按层划分?
    【答】相对于产品功能本身的变化,统一对某一个层面进行集中调整(比如网络层、界面层)的可能性不大,这一类调整通常是对原有技术方案的调整,影响很大,需要完整的程序和测试计划,这种情况出现时,必然会违背基本原则3,而与先功能划分,还是先按层划分没有关系。
  • 相关阅读:
    拖拽文件上传demo
    JS权限树数据处理demo
    某面试题 a==1&&a==2&&a==3 的解决方案以及涉及知识
    解决forEach函数中异步调用及Promise.all()的基础使用
    基于element ui的el-date-picker 日、周、月粒度切换时间选择器
    基于element ui的el-table-column行内编辑input/select封装
    JavaScript优化技术
    vue-canvas-poster生成海报 jsZip打包称压缩包
    uniapp中使用uView时 TypeError: Cannot read property ‘mark‘ of undefined
    JS中深拷贝数组、对象、对象数组方法
  • 原文地址:https://www.cnblogs.com/riskyer/p/3402473.html
Copyright © 2011-2022 走看看