系统设计开发思考__1

一.问题描述——接口联调过程中反复修改代码

目前正在做一个项目,项目小组共计7人。设计Android,ios,web三个大平台,后端使用springcloud。
由于后端的开发速度快于前端,所以后端大部分接口都已经写完了,前端还很大一截,等到后面开始联调的时候就出现了很多的问题。

  • 后端接口与前端逻辑不对应】一是由于后端同学是对着线框图独立进行接口设计的,所以等联调的时候却发现,有很多接口都不能完全达到要求,有时缺少一些返回信息,有时缺少一些参数,有的甚至逻辑上不正确
  • 界面的修改导致前后端代码的大幅修改】另一方面,随着线框图的不断修改设计,导致前端后端均发生了很大的改动,甚至将之前的代码推翻,重新编写,这个开发成本是很大的。

二.问题分析

原因:

1. 由于项目初期没有统一接口文档,所以后面的开发是的接口不能正常使用
2. 界面修改过程中,底层逻辑是不变的,原则上后端接口不需要进行大幅的修改

困难:

1. 在项目初期,需求的变化是很大的,系统暂未完全成型,很难敲定一个接口文档,之后不去修改
2. 时间上面也不太能允许去花费大量时间在接口的详细设计上面(在设计过程中既需要考虑当前版本页面数据的展示,也要考虑未来可能增加的页面数据展示。另外,业务的底层逻辑必须完全走通,并归入接口设计中。)

三.解决方案

1.部分接口应当是面向底层逻辑的,他们是不会改变的

这里以springboot框架为例:
之前的开发顺序,是按照下图从左至右顺次开发,每次过来一个需求,总是去controller里写个接口,然后写个业务接口,再去实现他的业务逻辑,最后进入持久层操纵数据。
在这里插入图片描述
这里有这样几个问题:

  • 1.controller到service大多为单一关系,且一般一个controller方法对应一个service接口,对应一个imp的实现类,然后该方法中有很复杂的业务逻辑实现。
  • 2.当修改顶层接口内容时,会导致底层的impl实现类有较多修改,当业务逻辑逐渐复杂过后,这将是很痛苦的事情。
  • 3.各个类之间的方法调用关系较为单一,导致impl中代码特别冗长,不易维护。
    改进:
    在这里插入图片描述
    这里将service提到了前面,按照从左至右的顺次开发程序员应当根据业务逻辑先编写service中的接口,并且这里的接口尽量做到职责单一,同时用于实现的方法也应该不止一个。
    比如:一个付款的接口,他应该有微信支付,支付宝支付,银行卡支付等多个实现类

2.注入领域驱动设计的思想

也就是在编写service类的时候,考虑到这各方面。将业务系统的领域类挑选出来,划分领域边界。一个领域类就是一个controller类,每一个对外界提供的接口就是他的行为。
每一个行为的构成应该是有很多个步骤组成,而这些“ 步骤”就是service类中的一个个java接口
举个例子:一个dog类,他应该有“行走”这个行为,于是dog这个controller中有了一个叫做“行走”的接口,而这个行为是需要多个动作相互配合的,可能是由service中的“腿的移动”,“摇尾巴”,“吐舌头”,“晃脑袋”等多个具体步骤合在一起的。
也就是先编写service中的各个“步骤”,然后再将这些“步骤”进行组合从而得到了最终呈现给用户的api

3.线框图整体框架的所有核心功能均设计完成后开始系统设计。某一个独立功能彻底设计完成后开始该模块的代码编写。

4.线框图不可过于频繁变更,每次变更需要一个固定周期,并且标注版本

猜你喜欢

转载自blog.csdn.net/qq_44625080/article/details/113980195
今日推荐