直面问题

本文通过一个实际案例探讨了代码审查的重要性,展示了即使是经验丰富的开发者也可能犯错,并强调了问题总会出现,我们能做的是通过重构和代码审查等手段尽可能地提前发现并解决它们。
brooks 写的 《人月神话》是IT行业的经典,大家都非常多的引述关于没有银弹的断言。
不过在这本书内,我还注意到他提到了一个关于bug的故事: 一个非常优秀的IBM程序员,主动拿出自己的代码来做评审,虽然信心满满,但是在一个15行的代码块内被找出了7个bug 来。
看到这里,我合上书,想想,这是一段怎样的代码,是那个行业的,用了什么样的语言?这个IBM程序员真的那么能干吗?
虽然缺乏这样的信息,我觉得15对7都是一个令人惊讶的数字。可是别人的例子到底不是自己的例子,感同身受的角度来说,终究还是差了点。就好比一个人来到了罗马和在相片上看到了罗马,差距是非常大的。
冥冥中自有安排。终于我也碰上了一次。
文章“巧用??操作符”发出后,下班前几分钟,yy找到我,这是我们的对话。为了方便阅读,我列出这两行代码:
var serials = serialout ?? "" + splitter + serialin ?? "";
serials.TrimStart(splitter);
yy:不好意思,你的代码我发现了2个错误。
me:两行代码你发现了2个错误?
yy:是啊。一个是??操作符的结合优先级比+低,导致和你期望的不一致;还有不仅仅要考虑TrimStart,当serialin==null时,需要TrimEnd。
me: 真不错。你把这个发到论坛上去吧。
yy: 不用了,你知道就可以了。
me: 不,一定要发上去;这样的学习机会不多,不能只是你我知道,让大家都知道多好。
yy: 好吧。
第二天他又找到了一个,说,"你不要介意,我又发现了一个bug,因为 serials.TrimStart 不会改变serials,而是通过函数返回值的方式得到新值,所以必须付给一个变量,像这样:serials = serials.Trim(splitter)“。
最后的效果是:
var serials = (serialout ?? "") + splitter + (serialin ?? "");
serials = serials.Trim(splitter);
这样下来,我的这个代码段的代码行和bug比例为 2:3,比起brooks的案例的15:7还要高!终于圆了一个n年前的梦啊。
我对如下的看法更加清晰:
1. 问题只要找,总是有的。
2. 我们能够做的,是在一定范围内控制错误,而不可能彻底的消灭他
3. 我们无法控制没有问题,但是可以通过一定的做法,让问题更加容易被发现;这就是重构的基本理由。
4. 问题常常存在于开发者的思维死角,因此换了角度,问题往往容易被发现;这就是互换评审的基本理由。
5. 人们总是容易因为不同的看法导致无法达成一致,也恰恰是这样的不同看法的存在,导致互换评审能够更加容易让问题暴露出来。真是非常有趣的人性。上帝怎么安排的?
为此我专门感谢了他。
【评估多目标跟踪方法】9个高度敏捷目标在编队中的轨迹和测量研究(Matlab代码实现)内容概要:本文围绕“评估多目标跟踪方法”,重点研究9个高度敏捷目标在编队飞行中的轨迹生成与测量过程,并提供完整的Matlab代码实现。文中详细模拟了目标的动态行为、运动约束及编队结构,通过仿真获取目标的状态信息与观测数据,用于验证和比较不同多目标跟踪算法的性能。研究内容涵盖轨迹建模、噪声处理、传感器测量模拟以及数据可视化等关键技术环节,旨在为雷达、无人机编队、自动驾驶等领域的多目标跟踪系统提供可复现的测试基准。; 适合人群:具备一定Matlab编程基础,从事控制工程、自动化、航空航天、智能交通或人工智能等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于多目标跟踪算法(如卡尔曼滤波、粒子滤波、GM-CPHD等)的性能评估与对比实验;②作为无人机编队、空中交通监控等应用场景下的轨迹仿真与传感器数据分析的教学与研究平台;③支持对高度机动目标在复杂编队下的可观测性与跟踪精度进行深入分析。; 阅读建议:建议读者结合提供的Matlab代码进行实践操作,重点关注轨迹生成逻辑与测量模型构建部分,可通过修改目标数量、运动参数或噪声水平来拓展实验场景,进一步提升对多目标跟踪系统设计与评估的理解。
hbuilderx心理测试案例:你最近的压力来源是什么? 问题1:当你感到疲惫时,最想做什么?(可多选) A. 一个人安静地待着 B. 找朋友或家人聊天 C. 直接睡觉或休息 D. 刷手机/玩游戏转移注意力 (点击确定跳转根据第一选择跳转页面,如选A跳转问题2页面;选B跳转问题3页面;选C/D跳转问题4页面) 注:此处需要设置选择A或B时不可多选,选C或D时可多选,但AB无法选择 问题2. 独处时,你更容易出现哪种状态?(可多选) A. 听音乐、看书或做喜欢的事 B. 胡思乱想,感到焦虑 C. 觉得孤独,但不想联系别人 (选A跳转问题4页面;选B/C跳转结果A页面页面) 问题3. 和朋友聊天时,你通常会谈论什么?(可多选) A. 生活中的烦恼 B. 有趣的事情或八卦 C. 未来计划或目标 (选A跳转测试结果C页面;选B跳转测试结果D页面;选C跳转测试问题4页面) 问题4. 你对“未来”的第一反应是?(可多选) A. 充满期待 B. 有点迷茫 C. 感到压力 (选A跳转测试结果D页面;选B跳转测试结果C页面;选C跳转测试测试结果E页面) 测试结果: A:情绪压力 你容易陷入焦虑或孤独,需要主动调节情绪,比如运动或写日记。 B:逃避倾向(直接从问题1选D或问题2选C) 你用娱乐掩盖压力,建议尝试直面问题,拆分任务逐步解决。 C:人际压力 你太在意他人看法或关系负担,学会拒绝能让你更轻松。 D:动力不足 你有目标但行动力差,设定小目标并奖励自己会更有效。 E:工作/学业压力 任务繁重让你喘不过气,优先排序+定时休息很重要。
04-25
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值