(补11月)代码大全阅读笔记3

news/2025/11/2 21:22:22/文章来源:https://www.cnblogs.com/awaTsuki/p/19185462

研读第23-25章关于测试与调试的内容后,我彻底摒弃了“开发负责写代码,测试负责找bug”的错误认知,建立起“开发者是质量第一责任人”的核心意识。书中一组数据让我尤为震撼:单元测试阶段发现并修复bug的成本,仅为上线后修复成本的1/10;而开发者自行测试能发现80%以上的代码缺陷,这与我此前“写完代码丢给测试,自己等着改bug”的工作模式形成强烈反差。此前开发一个会员积分兑换模块时,我匆匆完成功能后就提交测试,结果测试反馈“积分负数时能兑换商品”“兑换后积分未扣减”等5个严重bug,为了修复这些问题,我不仅要推翻部分逻辑重写,还因延误上线受到批评。而按照书中理念,在最近开发的优惠券发放模块中,我边写代码边做单元测试,提前规避了“优惠券过期后仍可使用”“同一用户重复领取同类型优惠券”等问题,测试阶段仅出现1个轻微的界面显示问题,开发效率和代码质量大幅提升。
书中介绍的多种测试与调试方法,兼具理论深度和实操价值,让我从“盲目测试、随缘调试”转变为“科学测试、精准定位”。测试方面,“边界值测试法”和“等价类划分法”让我摆脱了“逐行点击测试”的低效模式。在开发订单结算模块时,我运用等价类划分法,将订单金额分为“0元、1-999元、1000元以上”三个等价类,再针对每个类的边界值(如0元、1元、999元、1000元)设计测试用例,不仅覆盖了常规场景,更提前发现了“0元订单无法提交”“1000元以上订单未触发满减优惠”等隐藏问题,直接避免了上线后的客诉风险。调试方面,“二分法定位问题”和“日志埋点分析法”堪称效率利器。此前排查一个“用户登录后个人信息显示异常”的问题时,我逐行排查代码耗时2小时仍无头绪;运用二分法后,我在代码中间位置添加日志,判断问题出在“数据查询阶段”还是“数据渲染阶段”,快速定位到是数据库查询时遗漏了“用户昵称”字段,半小时就完成修复。此外,书中强调的“复现问题→分析根源→修复验证→总结预防”调试流程,让我养成了“不解决根源不罢休”的习惯,比如修复上述问题后,我在数据库查询工具类中添加了“字段完整性校验”,避免后续出现类似问题。
书中关于“测试心态”的论述,更让我实现了从“被动修bug”到“主动防bug”的思维转变。书中指出,优秀的开发者会“带着怀疑的眼光写代码”,在编码时就预判可能出现的问题,而非等到测试阶段才被动应对。我将这种理念融入日常开发,在编写复杂业务逻辑前,先梳理“可能的异常场景”并写入开发笔记,比如开发退款功能时,提前列出“退款金额超过支付金额”“订单已退款过”“支付渠道异常”等8种异常场景,针对每种场景设计处理逻辑和测试用例。这种“预判式开发”模式,让我开发的功能上线后bug率下降了60%以上。同时,书中提醒“避免随机修改代码试错”的原则,也让我改掉了“遇到问题就盲目删改代码”的坏习惯。曾经为了快速修复一个数据异常问题,我随意修改了查询条件,虽然暂时解决了问题,却导致后续出现更严重的数据错乱;如今我会先复现问题、通过日志定位根源,再针对性修改,修改后还会回归测试相关功能,确保没有引入新问题。这些测试与调试的理念和方法,不仅提升了代码可靠性,更让我从“只会写代码的程序员”向“对质量负责的开发者”转变。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/953812.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSP2025 - S 游记

Day -14 那天的模拟赛考得不错,拿了全校第二。 Day -13 太阳神开家长会骂了我们竞赛生。 心情不爽。 Day -11 晚上上厕所偶遇 xz,xz说我状态不错继续保持。 心情大好。 Day -7 集训,但是状态明显降低。 Day -5 没有…

CSP-S游记

CSP-S游记 首先读题,T1感觉直接贪心即可,T2应该不难,T3没想法,T4是计数我比较喜欢。 T1很快想出来代码也很好写20分钟过掉。 T2很容易想到 \(O(2^kn\log n)\) 的做法,但不确定能不能过就想优化把log去掉,想了一个…

小组作业1

小组作业1这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/Class12Grade23ComputerScience/这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/Class12Grade23ComputerScience/homework/13471姓名 学…

C语言字符串及其函数

字符串及其函数c语言 没有字符串类型,所以大多用字符数组代替。 1. 字符串的输入输出 使用 scanf 和 printf 的通用输入输出。 #include <stdio.h> #include <stdlib.h>/* run this program using the co…

CPULOAD建模设计

背景: 1.中断周期的建模 在单片机中中断和任务是两类处理数据的主要形式,中断的形式主要分为周期和时间两类。比如,LIN中断是根据调度表的周期去响应的,滚轮这种则是根据外部事件响应的。 2.响应时间的建模 中断的…

C 文件操作全解速览

文件操作文件分为二进制文件和文本文件,文本文件里面保存的内容形式是ASCII字符,二进制文件里面内容保存形式是01表示的。文件的主要作用是用来进行数据的持久化,能去长久的保存数据。这里f开头的文件操作命令,大多…

Java记录类:简化数据载体的新选择

Java 14引入的record类型为开发者提供了一种声明数据载体的简洁方式,有效减少了样板代码的编写。记录类旨在透明地保存不可变数据,自动实现数据访问方法和对象常用方法。 基本语法非常简单: public record User(Str…

第二次算法作业

基本思路 该算法采用分治策略来寻找数组中第k小的元素。首先从数组中随机选择一个基准元素,然后将数组划分为三个部分:小于基准的元素、等于基准的元素和大于基准的元素。根据k值所在的范围,决定在哪个子数组中继续…

NOIP 2025 游记 退役记

【洛谷专栏】 前言 前作:NOIP 2024 游记。 上一篇文章:CSP-S 2025 游记(The Last CSP ver.)。 同样地支持友链互挂,请私信。 CSP 结束了,可能没有冬令营机会了。 联赛,翻盘,还是,很难。 正文 2025.11 11.1 提…

一个万古常青的、小而美的输入法

一个万古常青的、小而美的输入法万古常青apt install fcitx-sunpinyin 即可安装。Ubuntu和Debian不倒,就一直有。美系统词库为libgooglepinyin和sunpinyin的合并去重版,词比它们都多。 用sunpinyin训练了字的三元语法…

开始学深度学习!

开始学深度学习!

LLaMA-Factory

LLaMA-Factory Used by Amazon, NVIDIA, Aliyun, etc.Supporters ❤️Warp, the agentic terminal for developersAvailable for MacOS, Linux, & WindowsEasily fine-tune 100+ large language models with zero-…

守护线程--daemon

线程可以分为用户线程与守护线程,虚拟机必须等待用户线程执行完毕但不用等待守护线程执行完毕 守护线程如:垃圾回收机制, 内存监控等 守护线程顾名思义,用于守护用户线程,下面举例介绍 public class Daemon {publ…

换一个思维解决问题:希望在转角

前段时间困扰我的一个网络拦截请求的问题,终于被巧妙地解决了。 我之前开发了一个net proxy,专门用于对特殊网络环境的模拟,以此测试一个工作中需要测试的软件。简单来说就是用mitmproxy实现一个网络流量代理服务,…

条件表达式中的赋值问题

条件表达式中的赋值问题在条件表达式中(如while、if语句的条件部分),不允许直接进行变量初始化并同时使用该变量进行比较。C++语法规则禁止在条件判断中同时进行变量声明和比较操作。 int numJewelsInStones(string…

csp2025 总结

T1T2 没有什么失误,大概 40min 的时候过了。 T3 之前做过 https://uoj.ac/problem/772 (但其实纯粹是误导),当时就忘记了复杂度分析依赖贡献一起处理(虚树)后来改了,场上就把虚树这个环节忘了,大样例很水所以过…

CSP 总结

J 前两题写得比较快,20min 左右过了。 T3 一开始看错了,以为区间可以重叠,手动模拟了一下样例发现不对,重读了一遍题,大概在 40min 时过了大样例。 感觉手感火热,遂开 T4,发现直接统计和大于 \(l_i\) 的不太好做…

2025 CSP

考虑自己的考场策略是否正确T1T2只用了40分种,问题在于T3的时间分配过多,但是我认为这是比较正确的因为在T1T2是签到题的情况下,以及T4基本不可能想出正解的情况下,去想一个自己已经有50分暴力分思路的T3是一个比较…

Jenkins-CICD项目自动化部署

1.环境准备主机名 IP 配置dev 192.168.233.146 2G C1project_master 192.168.233.154 3G,2C1project_slave 192.168.233.155 3G,2C1auto_deployment 192.168.233.156 5G,2C12.初始化环境 四台都做 #1.修改主机名 hostn…

使用Stream API重构你的数据处理

如果你还在使用繁琐的for循环和临时集合来处理数据,是时候了解Java 8引入的Stream API了。它让数据处理变得声明式、可组合,并且更加优雅。 什么是Stream? Stream不是数据结构,而是对数据源(集合、数组等)的元素…