博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从《从架构的角度看,如何写好代码?》中来看如何编写单元测试代码
阅读量:5816 次
发布时间:2019-06-18

本文共 1205 字,大约阅读时间需要 4 分钟。

《从架构的角度看,如何写好代码?》这篇文章是一线开发人员实践的经验总结,文字很通俗,应该是基于Java语言环境,但我认为也是符合多数PHP项目团队的所处实践阶段的。

“业余选手,越想从水里浮起来,就越想把头抬起来,身体反而沉下去。只有克服恐惧,把头往水里压下去,身体才能够从水里浮起来。真正专业的习惯往往是和我们日常的行为相反的”。

文章里面提出的代码分层结构如下图:

5409-20160419233251601-803430680.png

左侧的要直接面对用户的需求,右侧的更多的需要面对业务的核心。

逻辑只允许存在于右侧Business中,左侧Service、Glue Code、Repository都不允许存在业务逻辑。

分工:

  • Service专注于用户的需求,并组合Glue Code提供的服务完成需求。

  • Glue Code专注于组合business的调用,管理Business里面对象的生命周期,并且通过Repository保存或加载Business的状态。

  • Business专注于实现业务逻辑的核心模型。

  • Repository专注于数据的保存,并和存储设备一一对应。

    只要这几块的开发人员互相商量好了接口定义,这几个部分的开发就可以并行的进行,极大的提升开发的效率,缩短开发的时间。

概念详解

Repository

从BM对象传递过来,转换为对应的entity进行数据库操作

Business Model

业务逻辑

在软件代码中,不需缩进和计算的顺序调用,包括缩进的代码目的是catch exception的,都不算逻辑,除此以外都是逻辑。

BM与Entity

Model关心的实际上是业务行为,数据只是是这些行为的结果。所以Glue Code需要把Model转换为Entity(每个Entity对应一张表,并且跟着表的变化而变化),Entity和存储设备里面的存储粒度一一对应,这样就保证存储的变更不会影响Model。

Business Model是必须要重用的,一旦发现重用出现问题,那么说明Business Model的识别出现了问题,这是一个我们要重新思考Model的信号。

在PHP中,重用的标准,可以参考Java的Jar包形式,将BM打包成Phar包独立发行管理。

Business Model必须是一个完美的树状,如果不是,也说明Model的识别出了问题。

Service

确保每个Service只做一件事情。

当多个不同的角色访问同一个接口,一旦某个角色的需求发生了变化,就会要求开发人员去修改,而这个修改往往会影响到其他的角色。尽量给不同的角色不同的Service,避免重用,降低沟通成本。

Service里面没有逻辑的话,开发和管理非常的简单,可以快速应对业务的变化。只有更快地变,更容易的变,才能更好地应对变。

如何写单元测试代码

结论,对BM层的代码进行单元测试。

基于这篇文章,应该可以整理出一套供团队使用的PHP开发框架,包括单元测试的骨架。

转载地址:http://zombx.baihongyu.com/

你可能感兴趣的文章
通过Roslyn构建自己的C#脚本(更新版)(转)
查看>>
红黑树
查看>>
UIImagePickerController拍照与摄像
查看>>
python调用windows api
查看>>
Linux内核中的printf实现【转】
查看>>
第四章 mybatis批量insert
查看>>
Java并发框架——什么是AQS框架
查看>>
【数据库】
查看>>
Win配置Apache+mod_wsgi+django环境+域名
查看>>
第四届中国汽车产业信息化技术创新峰会将于6月在沪召开
查看>>
linux清除文件内容
查看>>
WindowManager.LayoutParams 详解
查看>>
find的命令的使用和文件名的后缀
查看>>
Android的Aidl安装方法
查看>>
Linux中rc的含义
查看>>
曾鸣:区块链的春天还没有到来| 阿里内部干货
查看>>
如何通过Dataworks禁止MaxCompute 子账号跨Project访问
查看>>
js之无缝滚动
查看>>
Django 多表联合查询
查看>>
logging模块学习:basicConfig配置文件
查看>>