后端开发总结(3):代码健壮性:容错处理+测试
代码健壮性:容错处理+测试
- 1.1 客户端接收云端请求容错处理
- 1.2 参数校验
- 1.3 测试
1.1 客户端接收云端请求容错处理
几种错误情况
- 没有请求通,没有返回。服务端错误,对应的就是http 的状态码,比如500
- 请求通了,但是结果有问题。自定义的返回response中的code信息,比如5000
response, err := http请求
if err != nil || response.StatusCode() != http.StatusOK {// 打印日志信息log.Log().Errorf("service return configure error: %v", err)// 错误处理
} else {if responseBody.Code != cloud.OK {// 错误处理}
}
1.2 参数校验
首先明确,只要有参数就必须进行参数校验,保证代码的健壮性
服务端模型:
- 一般会在最先进入controller层和app_service层时进行参数校验,然后才是代码逻辑
- 一般到service层repo层就默认参数没有问题
自定义的方法:
- 传递的参数,必须进行参数校验,因为你不知道别人会如何进行调用。具体可以参考各种go的包提供的方法对参数的容错处理
1.3 测试
一个开发迭代下来感受自己的开发过程
- 需求分析,大概有个主线思路
- 方案初步设计,数据库设计
- 先开始写,写的过程不断修改最初的方案设计
- 发现需求细节不明确,去跟业务人员确认
- 确认好几次终于写完所有逻辑
- 发现逻辑的细节、可能的情况不是很清楚,继续确认
- 运行起来测试一下,不工作,调试
- 测试,调试好久终于工作了
- 终于,代码可以工作了,一看代码烂的像坨屎
- 实际上线使用,又发现一堆新的bug,逻辑漏洞、没有涵盖的数据情况、代码bug,不断迭代修复…
总结:
- 思路梳理不清楚、细节不完善,写的时候漏掉很多情况,代码实现后面就变成了修修补补
- 代码框架:日志打印+参数校验+容错处理+数据转化+总体逻辑
- 代码简洁性
- go文件放在哪个文件夹下面才能很好的保证整体结构
- 代码调用,什么时候需要抽象出新的方法,使代码不会臃肿冗余,抽象出的代码应该放在哪里
- 代码自身的实现,简洁性,代码简洁之道
- 代码涉及的设计模式、比如什么时候用类方法,什么时候只是一个方法,什么时候用dao,option,condition
- 建议学习数据库开发经验
优秀的测试可学习:
DDD测试驱动开发
后端开发总结(3):代码健壮性:容错处理+测试相关推荐
- c++代码健壮性_复活Navex-使用图查询进行代码分析(上)
从了解到修复 Navex, 其中花了一年多, 从对自动化代码审计一无所知到学习PL/Static Analysis, 翻阅十几年前的文档, 补全Gremlin Step, 理解AST, CFG, DD ...
- php代码的健壮性,代码健壮性的几点思考 - 逍遥客 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
自动化一直如火如荼的发展的,但同时,很多从业者在经历了最初的热情.激进之后,也会陷入了冷静的思考:那就是投入产出比问题,那就是自动化测试是否真的给测试工作带来了质的改变. 在诸多的引起思考,带来彷徨的 ...
- 【转】使用python3的typing模块提高代码健壮性
https://blog.csdn.net/wjy397/article/details/78711125 转载于:https://www.cnblogs.com/LJ-LJ/p/9728481.ht ...
- 【Python教程】typing模块的作用-提高代码健壮性
typing模块的作用: 类型检查,防止运行时出现参数和返回值类型不符合. 作为开发文档附加说明,方便使用者调用时传入和返回参数类型. 该模块加入后并不会影响程序的运行,不会报正式的错误,只有提醒. ...
- 代码健壮性的获得 —— 借助编译器及语言的语法特性
1. 借助编译器 主要利用编译器对语法中一些关键字.修饰符的支持: Java final.static 注意区分 Java 的按值传递和按引用传递,但使用按引用传递时,被调端不会对(没有能力)对调用端 ...
- 代码健壮性 —— 边界条件的判断
边界条件的判断包括: 文件读操作:第一个字符,最后一个字符,倒数第二个字符: 大于号与大于等于号: 1. 数据结构 关于整数: 正数:包括边界值 1.0x7FFF FFFF 负数:包括边界值 0x80 ...
- 代码健壮性 —— 异常保护和合法性检测
参数: 入参: 是否为空 返回值: 是否为空: 根据返回状态码或返回值判断函数执行的状态: 1. 参数的合法性检测(validate) 指针是否为空 if (p == NULL)... 内存申请:要判 ...
- 【C语言】实用调试技巧与const函数提升代码健壮性
作者简介:大家好我是狂暴于涛侠
- 后端开发都应该了解点接口的压力测试(Apache Bench版)
背景 小A:小B,最近调你的接口老是超时呀,8秒都还没返回结果,是不是有性能问题呀! 小B :我看看~~ 类似这样的对话,在现实中是时有发生的,不是特别严重的话,往往大家也不会去重视这个事. 尤其是在 ...
最新文章
- 也许是东半球直接底气的分库分表实践了
- SmartNIC/DPU — 技术方向
- Hibernate generator
- 软件工程结对开发团队成员以及题目介绍
- 正则表达式的简单理解
- java servlet是接口_JavaWeb:Servlet 接口
- MYSQL MVCC实现及其机制
- vue之computed和watch
- node 报错 throw er; // Unhandled 'error' event 解决办法
- 偷偷告诉你,互联网公司理想的技术架构!
- HDU 4335 What is N?(指数循环节)题解
- 计算机机房建设公司 武汉,武汉信息化机房建设企业
- GBase 8a MPP Cluster管理工具---“GBaseDataStudio”
- python爬取腾讯vip_用Python批量爬取付费vip数据,竟然如此简单
- Git下载(下载失败解决方式)
- 全面风险管理体系架构图
- sql中按照指定字段排序失效
- Open3d 获取渲染和固定视角json文件及读入
- 燕山大学机器学习期末复习知识点罗列
- Dw新建HTML网页步骤
热门文章
- 数学建模——Matlab画散点图
- S如何边缘控制_驾考科目二侧方位停车、倒库与S弯道,上坡起步技巧及注意事项,意外应对方法...
- AF染料试剂Alexa fluor 680 PEG Biotin,AF680 PEG Biotin,荧光强度稳定利于多种荧光标记
- 荧光染料标记蛋白质,Cy3/Cy5.5/Cy7-BSA/HAS/Transferrin/Concanavalin A/Casein/Ovalbumin
- 对编程累觉不爱?学会这5招,让你重燃激情!
- 计算机散热程序,电脑的散热方法
- [剑指Offer]:数值的整数次方(循环解答,快速幂---递归、循环)
- 目标检测mAP计算详解
- 怎样用PS制作8张一寸照片
- web 一键拨号和一键发送短信