点击围观!腾讯 TAPD 助力金融行业研发提效、敏捷转型最佳实践! 了解详情
写点什么

前置条件断言

  • 2020-09-09
  • 本文字数:1112 字

    阅读完需:约 4 分钟

前置条件断言

1、什么是断言

断言(assert),是编程术语,表示为一些布尔表达式, 程序员相信在程序中的某个特定点该表达式值为真,可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言而在部署时禁用断言。


断言的使用通常在单元测试中,使用断言可以创建更稳定,品质更好且不易于出错的代码。

2、断言特性:

  • 前置条件断言:代码执行之前必须具备的特性

  • 后置条件断言:代码执行之后必须具备的特性

  • 前后不变断言:代码执行前后不能变化的特性

3、前置条件断言

程序的业务逻辑处理,一般是有必须满足的条件,才能进行对应的处理,否则就不能正确的执行。而 代码开发中,如果不在业务处理前,对其所需的条件进行判定,则在后续中,就会出现各种隐患


  • 在 PRD 中,对于业务逻辑,也是有一定满足条件才能执行的。

  • 在敏捷开发中,TDD 是其一项核心实践。

  • 在测试用例中,对于测试场景来说,也是应有前置条件的约束的。


那么,综上所诉,是不是在写业务功能之前,进行断言判断呢?


答案是肯定的, 进行前置条件断言,不仅符合业务实际,也对代码规范进行了约束,同时,也会避免大量的不必要的隐患。


在项目中,我们通过在应用接口层进行对外交互。那么对应的,条件断言,也应在这里进行。我们假设,进行断言,如果不通过,则抛异常码,并且显示在返回结果中。


那么,首先,应定义全局异常码,在项目中,每个码都应唯一并且有确定的含义。在全局异常码,可以根据业务,进一步分为 错误码,转向提示码


错误码,很容易理解,他的信息可以由用户或上游调用方显示看到


转向提示码,则是需要根据码,可以进行一些对应业务处理,比如,用户登录信息 session 超时,可以使用转向提示码,通知上游,直接转向登录页面。

4、断言执行流程


接下来,我们可以简单的尝试一下做个断言工具类 AssertUtils。


public class AssertUtils {
/** * check if source is equals target.<p> * if source == null && target == null,will not throws Exception * @param code * @param source * @param target */ public static void eq(int code,Object source,Object target) { boolean eq = false; eq = source == null ? target == null ? true : false : target == null ? false : source.equals(target) ; if(!eq) ExceptionUtils.throwSimpleEx(code); } }</p>
复制代码


ExceptionUtils 是自定义异常 Utils,里面对异常进行了封装,并且对 code 进行了配置注册。


在使用上,我们可以这样来使用:


int a1 = 12;Integer a2 = 123;AssertUtils.eq(1401,a1,a2);
复制代码


就对 a1 和 a2 进行了相等的断言,不符合,则抛出 1401 的异常码。


本文转载自公众号宜信技术学院(ID:CE_TECH)。


原文链接


前置条件断言


2020-09-09 14:05898

评论

发布
暂无评论
发现更多内容

洞见科技纪凯:隐私计算助力「全链路」金融客户经营

洞见科技

隐私计算

深圳web前端技术学习费用是多少?尚硅谷前端培训

小谷哥

李宏毅《机器学习》丨4. Deep Learning(深度学习)

AXYZdong

机器学习 7月月更

从0到1 拿下C语言—程序结构及使用示例

一碗黄豆酱

【等保常见问题解答】等保测评机构能帮忙做等保整改吗?

行云管家

网络安全 等保 等保测评 等保整改

2022第十四届南京国际智慧工地展览会|智慧工地展

AIOTE智博会

智慧工地展览会

瓜分30万奖金!DeepRec CTR模型性能优化天池挑战赛来啦

阿里云大数据AI技术

深度学习

IReport导出PDF字体加粗失效

源字节1号

软件开发 前端开发 后端开发 小程序开发

nacos注册中心之服务地址动态感知

周杰伦本人

7月月更

可观测性提升软件工程质量,观测云出席2022 QECon全球软件质量&效能大会

观测云

数据治理笔记

老猎人

重磅预告!易观分析联合微软、中央财经大学,共话数字经济

易观分析

数据驱动

ModuleNotFoundError_No_module_named通俗的解释和方法

和牛

测试

NFT链游戏系统开发元宇宙GameFi搭建

薇電13242772558

dapp NFT 元宇宙

设计微服务安全架构

Damon

7月月更

6W+字记录实验全过程 | 探索Alluxio经济化数据存储策略

Alluxio

数据湖 数据膨胀 降本增效 Alluxio 大数据 开源

如何用度量数据驱动代码评审的改善

思码逸研发效能

数据分析 研发效能 科技 效能度量

2022第十五届南京国际工业自动化及工业机器人展览会

AIOTE智博会

【字体反爬】猫X眼YingShi,我们又来欺负你了,用到了 OCR 识别技术

梦想橡皮擦

Python 爬虫 7月月更

大数据开发技术入门学习方法有哪些

小谷哥

超实用转型攻略!《2022央国企云原生落地实用指南》重磅发布(附下载链接)

York

云原生 系统架构 数字化转型 信创 国资委中央企业

2022第十四届南京国际智慧城市|物联网|大数据博览会

AIOTE智博会

南京智博会 物联网展览会 智慧城市展览会

智慧灯杆展会|2022南京国际智慧灯杆及智慧路灯展览会

AIOTE智博会

人工智能展会|2022第十四届南京国际人工智能展览会

AIOTE智博会

人工智能展览会

架构实战营模块七作业

Geek_Q

纯css实现:如何做个完美的平行四边形

南极一块修炼千年的大冰块

7月月更

开源demo| ARCall 小程序开源示例发布

anyRTC开发者

小程序 音视频 视频通话 开源demo ARCall

IT运维管理指什么?如何建立有效的IT运维管理系统?

行云管家

运维 IT运维 服务器运维

兼容认证|青云QKCP与观测云完成产品兼容性互认证,携手打造云原生可观测能力

观测云

百度工程师眼中的云原生可观测性追踪技术

百度Geek说

Java 云原生

大咖说·图书分享 | HaaS 物联网设备云端一体开发框架

大咖说

阿里巴巴 物联网 大咖 HaaS

前置条件断言_测试_weiwei_InfoQ精选文章