一般而言,类库的使用频率较高,场景较多,隐藏的bug就较少。
因此,当我们发现代码中有问题的时候,首先应该怀疑应用的代码,只有确定了应用的正确性后,再去排查类库的bug。
Money income = new Money(0);
Money outgo = new Money(0);
for (Money money : moneyList) {
if (money.isIncome()) {
income = income.add(money);
} else {
outgo = outgo.add(money);
}
}
Money total = income == new Money(0) ? outgo.add(income) : income
.add(outgo);
该段代码是摘自一个方法。该方法接收一个Money的列表,需要计算收入总额,支出总额,总额。Code review的时候,很明显,最后一行很可疑。
计算总额照理只需要income.add(outgo)就好了,不明白为什么写成这样。
和开发沟通后,他解释说是因为在自己测试中,发现new Money(0).add(new Money(100))的结果金额为0,new Money(100).add(new Money(0))的金额为100。于是就有了最后一行代码。
Money属于类库中的类,在系统中被大量使用,因此,我认为不会有这种问题。要求开发重现一下,开发重现不了,看开发重现的方式估计是手误为:
Money i = new Money(0);
Money j = new Money(100);
System.out.println(i.add(i));
抛开这个手误不谈。加法是满足交换律的,如果发现Money类确实存在这个bug,也应该是通知Money类的维护者Money存在一个bug,请维护者修正Money类中的这个bug,而不是使用方使用奇怪的方式试图绕过该bug。
分享到:
相关推荐
12. **代码组织和重构**:良好的代码结构和命名规范,以及适当的注释,对于理解和维护类库和Web应用程序至关重要。 13. **调试和测试**:包括单元测试和集成测试,确保计算器逻辑的正确性和Web应用程序的稳定性。 ...
### .NET Framework 类库概述与深入解析 #### 核心概念与重要性 .NET Framework类库,作为微软推出的一套全面的开发框架,为开发者提供了丰富的API和类库,覆盖了从基本的数据类型操作到复杂的应用程序开发所需的...
在IT行业中,MFC(Microsoft Foundation Classes)是一个由微软开发的C++类库,它为构建Windows应用程序提供了基础框架。MFC数据类库是MFC的一部分,包含了一系列封装了常见数据结构的类,如cstring、cstring_array...
描述中的“幅值谱重构语音”指的是从MFCC中恢复出幅度谱,然后使用IFFT将其转换回时间序列。 **谱重构**是指根据频率域信息(如幅度谱或功率谱)重建原始信号的过程。在语音处理中,谱重构对于语音识别、语音合成...
标题中的“用于信号的EMD、EEMD、VMD分解_vmd重构_故障诊断emd_故障诊断_故障重构_VMD信号重构_源码.rar.rar”揭示了该压缩包文件包含的是与信号处理相关的源代码,特别是涉及了三种重要的信号分解方法:Empirical ...
在描述中提到的"对经验模态分解后的各分量IMF进行重构代码,函数可直接调用",意味着这个压缩包中包含了一个名为"EMDchonggou.m"的MATLAB脚本文件,该文件提供了实现IMF重构功能的代码。用户可以直接运行这个函数,...
在STL的基础上,FSCL可能对某些数据结构和算法进行了重构,以减少不必要的资源消耗,并且可能针对特定场景进行了性能调优。这使得它在嵌入式系统或者资源受限的环境中特别有用,因为这些环境往往无法承受STL的全部...
重构__改善既有代码的设计_高清 绝对清晰
牛顿拉普逊法就算配电网重构的潮流程序,结构清晰易懂。
配电网重构是电力系统领域中的一个重要研究课题,它涉及到电力系统的稳定运行与经济效率。配电网重构的目标是在满足一系列约束条件下,通过改变开关状态,优化网络结构,以达到提高供电可靠性、降低运营成本、改善...
在本文中,我们将深入探讨基于Matlab的压缩感知(Compressive Sensing,简称CS)重构算法的实现。压缩感知是一种理论先进的信号处理方法,它允许我们以远低于奈奎斯特定理所要求的采样率捕获信号,并能恢复原始信号...
《重构:改善既有代码设计》是一本由Martin Fowler所著的经典IT著作,它详细阐述了在软件开发过程中如何通过重构来提升代码质量、可读性和维护性。重构是一种系统性的方法,旨在不改变软件外在行为的前提下,改进其...
在IT行业中,尤其是在医疗影像处理领域,三维重构技术扮演着至关重要的角色。"NewPrjName.rar" 是一个与三维医学图像重构相关的项目文件压缩包,它涉及到的是使用C++编程语言来实现这一复杂的计算过程。这个项目的...
压缩传感重构算法中的子空间追踪算法,用于信号的重构
这个压缩包中的"第13章 MATLAB图像重构实战"可能包含了一系列的MATLAB脚本和函数,用于演示如何使用MATLAB实现fanbeam变换。这些脚本可能包括数据读取、预处理、fanbeam投影、反投影以及图像重构等步骤。在学习和...
资源名:用于信号的EMD、EEMD、VMD分解_vmd重构_故障诊断emd_故障诊断_故障重构_VMD信号重构 资源类型:matlab项目全套源码 源码介绍:用于信号的分解、降噪和重构,实现故障诊断 源码说明: 全部项目源码都是经过...
北理新源,TBOX项目RTT代码重构项目_BTFS_TBOX_RTT
在电力系统领域,配电网重构是一项关键的技术,其目的是通过改变配电网络的...总之,配电网重构源码的获取为研究和实践提供了宝贵的工具,通过深入学习和应用,可以提升电力系统的运行效率,为智能电网的发展做出贡献。
用户重构0113_20160129094530.rp,用户系统重构产品设计,原型和设计