代码健壮性:容错处理+测试

  • 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):代码健壮性:容错处理+测试相关推荐

  1. c++代码健壮性_复活Navex-使用图查询进行代码分析(上)

    从了解到修复 Navex, 其中花了一年多, 从对自动化代码审计一无所知到学习PL/Static Analysis, 翻阅十几年前的文档, 补全Gremlin Step, 理解AST, CFG, DD ...

  2. php代码的健壮性,代码健壮性的几点思考 - 逍遥客 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...

    自动化一直如火如荼的发展的,但同时,很多从业者在经历了最初的热情.激进之后,也会陷入了冷静的思考:那就是投入产出比问题,那就是自动化测试是否真的给测试工作带来了质的改变. 在诸多的引起思考,带来彷徨的 ...

  3. 【转】使用python3的typing模块提高代码健壮性

    https://blog.csdn.net/wjy397/article/details/78711125 转载于:https://www.cnblogs.com/LJ-LJ/p/9728481.ht ...

  4. 【Python教程】typing模块的作用-提高代码健壮性

    typing模块的作用: 类型检查,防止运行时出现参数和返回值类型不符合. 作为开发文档附加说明,方便使用者调用时传入和返回参数类型. 该模块加入后并不会影响程序的运行,不会报正式的错误,只有提醒. ...

  5. 代码健壮性的获得 —— 借助编译器及语言的语法特性

    1. 借助编译器 主要利用编译器对语法中一些关键字.修饰符的支持: Java final.static 注意区分 Java 的按值传递和按引用传递,但使用按引用传递时,被调端不会对(没有能力)对调用端 ...

  6. 代码健壮性 —— 边界条件的判断

    边界条件的判断包括: 文件读操作:第一个字符,最后一个字符,倒数第二个字符: 大于号与大于等于号: 1. 数据结构 关于整数: 正数:包括边界值 1.0x7FFF FFFF 负数:包括边界值 0x80 ...

  7. 代码健壮性 —— 异常保护和合法性检测

    参数: 入参: 是否为空 返回值: 是否为空: 根据返回状态码或返回值判断函数执行的状态: 1. 参数的合法性检测(validate) 指针是否为空 if (p == NULL)... 内存申请:要判 ...

  8. 【C语言】实用调试技巧与const函数提升代码健壮性

    作者简介:大家好我是狂暴于涛侠

  9. 后端开发都应该了解点接口的压力测试(Apache Bench版)

    背景 小A:小B,最近调你的接口老是超时呀,8秒都还没返回结果,是不是有性能问题呀! 小B :我看看~~ 类似这样的对话,在现实中是时有发生的,不是特别严重的话,往往大家也不会去重视这个事. 尤其是在 ...

最新文章

  1. 也许是东半球直接底气的分库分表实践了
  2. SmartNIC/DPU — 技术方向
  3. Hibernate generator
  4. 软件工程结对开发团队成员以及题目介绍
  5. 正则表达式的简单理解
  6. java servlet是接口_JavaWeb:Servlet 接口
  7. MYSQL MVCC实现及其机制
  8. vue之computed和watch
  9. node 报错 throw er; // Unhandled 'error' event 解决办法
  10. 偷偷告诉你,互联网公司理想的技术架构!
  11. HDU 4335 What is N?(指数循环节)题解
  12. 计算机机房建设公司 武汉,武汉信息化机房建设企业
  13. GBase 8a MPP Cluster管理工具---“GBaseDataStudio”
  14. python爬取腾讯vip_用Python批量爬取付费vip数据,竟然如此简单
  15. Git下载(下载失败解决方式)
  16. 全面风险管理体系架构图
  17. sql中按照指定字段排序失效
  18. Open3d 获取渲染和固定视角json文件及读入
  19. 燕山大学机器学习期末复习知识点罗列
  20. Dw新建HTML网页步骤

热门文章

  1. 数学建模——Matlab画散点图
  2. S如何边缘控制_驾考科目二侧方位停车、倒库与S弯道,上坡起步技巧及注意事项,意外应对方法...
  3. AF染料试剂Alexa fluor 680 PEG Biotin,AF680 PEG Biotin,荧光强度稳定利于多种荧光标记
  4. 荧光染料标记蛋白质,Cy3/Cy5.5/Cy7-BSA/HAS/Transferrin/Concanavalin A/Casein/Ovalbumin
  5. 对编程累觉不爱?学会这5招,让你重燃激情!
  6. 计算机散热程序,电脑的散热方法
  7. [剑指Offer]:数值的整数次方(循环解答,快速幂---递归、循环)
  8. 目标检测mAP计算详解
  9. 怎样用PS制作8张一寸照片
  10. web 一键拨号和一键发送短信