您现在的位置是:亿华云 > IT科技
如何在Java中有效地清除掩盖问题?
亿华云2025-10-03 15:55:53【IT科技】1人已围观
简介因为软件缺陷会让我们在开发人员中显得很糟糕,并导致其他人对我们的看法降低,所以最好避免编写缺陷,快速识别和修复缺陷,或者掩盖我们的缺陷。有许多博客文章和文章讨论如何避免bug以及如何识别和修复bug,
因为软件缺陷会让我们在开发人员中显得很糟糕,有效并导致其他人对我们的地清看法降低,所以最好避免编写缺陷,除掩快速识别和修复缺陷,盖问或者掩盖我们的有效缺陷。有许多博客文章和文章讨论如何避免bug以及如何识别和修复bug,地清因此,除掩在这篇文章中,盖问介绍一些最有效的有效策略,以彻底解决Java代码库中的地清问题。
1. 吞咽检查异常
当我们不小心在代码中引入了bug时,除掩异常就是盖问其中之一。在方法上声明throws子句或捕获已检查的有效异常也是一件麻烦事。这两个问题的地清解决方案都是在异常可能被抛出时捕获异常(即使它是正在运行时一场),而不执行任何操作。除掩这使API保持简洁,对于检查的异常,人们几乎无能为力。通过不记录它或对它做任何事情,甚至没有人需要知道它曾经发生过。
2. 注释掉或删除不满意的单元测试
失败的单元测试可能会让人分心,站群服务器并且很难确定新功能何时破坏了测试。它们还可以揭示我们在代码更改时破坏了某些东西。注释掉这些失败的单元测试将使单元测试报告更清晰,并且更容易查看是否有其他人的新功能破坏了单元测试。
3. 在基于JUnit的单元测试中使用@Ignore
注释掉失败的单元测试似乎令人不快,所以另一个可能更令人愉快的选择是用@Ignore注释失败的基于JUnit的单元测试方法。
4. 完全删除单个测试
如果用@Ignore注释一个中断的测试或用@Ignore注释一个中断的测试是不令人满意的,因为有人可能仍然检测到我们破坏了一个单元测试,那么我们可以简单地将有问题的单元测试全部删除。
5. 注释掉令人不快的断言
我们不一定需要注释掉或删除整个测试。它可以简单到注释掉或删除单元测试方法中的断言语句。该方法每次都可以成功执行和运行,因为没有断言意味着没有失败的方法。当单元测试方法非常长且复杂,因此不容易发现缺少断言时,这种方法尤其有效。服务器租用
6. 用无用和冗余测试的噪音分散注意力
注释掉单元测试,用@Ignore注释基于JUnit的单元测试,甚至删除单元测试,对于在Java中彻底解决问题来说,这些策略可能太明显了。为了使这些不那么明显,另一个有效的策略是在同一个单元测试类中编写大量不必要的和冗余的测试方法,这样看起来似乎正在进行全面的测试,但实际上,只有一小部分功能(我们知道的子集正在工作)正在进行测试。
7. 编写单元测试,以“证明”您的代码是正确的,即使它不是
我们可以利用这样一个事实,即单元测试只能测试单元测试的作者认为被测试软件的预期行为,从而编写单元测试来证明我们的代码是正确的。如果我们将两个整数相加的服务器托管代码在提供2和2时意外返回5的总和,那么我们可以简单地将单元测试中的预期结果也设置为5。给出了一份漂亮的单元测试报告,没有人会更明智。
8. 避免记录详细信息
日志可能会暴露软件问题,处理此风险的有效方法是根本不记录日志,只记录例行操作和结果,并在记录的消息中留下详细信息(尤其是上下文)。对平凡细节的过度记录也会掩盖任何可能暴露代码弱点的更有意义的消息。
9. 避免使用描述性的toString()实现
一个描述性的toString()方法可以揭示太多关于任何给定实例的状态,并揭示我们的错误。不覆盖对象。toString()会使识别问题和将问题与任何给定代码或开发人员关联变得更加困难。跟踪问题所需的额外时间为您提供了更多的时间,以便在发现是您的代码出了问题之前进入下一个项目。如果您编写的Java类使用描述性toString()扩展了一个类,那么您可以在扩展类中重写该方法而不做任何事情(有效地删除可能导致toString()错误的输出)。如果您想让它看起来好像从未在继承层次结构中实现过一样,请确保扩展类的toString()方法返回系统。标识hash代码(此)。
10. 不要让NullPointerExceptions背叛你
NullPointerExceptions可能是Java开发人员处理的最常见的异常。这些特别危险,因为它们经常暴露代码的弱点。一种策略是简单地用try-catch包装每一行代码,并简单地吞下异常(包括NPE)。
另一个不太明显的策略是通过从不返回或传递空值来避免NPE。有时,使用默认值代替null(例如空字符串或集合)是有意义的,但有时我们必须更具创造性地避免null。在这一点上,使用“默认”非空值代替空值是很有用的。
关于如何处理这种任意的非空缺省值,有两种观点。一种方法是使用数据集中最常见的值作为默认值,因为如果它是通用的,那么当更多的值出现时,可能不会注意到它,并且您更有可能拥有处理该通用值的代码,而不会发生意外。另一方面,如果您有一个几乎从未使用过的值,这可以成为一个良好的默认值,因为受它影响的代码(尤其是经过良好测试的代码)可能比通常预期的值少。
很赞哦!(5544)
相关文章
- 利用戴尔科技5G+边缘计算 打造更智慧的急救方案
- 评估域名涉及的行业规模与发展状况成正比。
- 公司名字不但要与其经营理念、活动识别相统一,还要能反映公司理念,服务宗旨、商品形象,从而才能使人看到或听到公司的名称就能产生愉快的联想,对商店产生好感。这样有助于公司树立良好的形象。
- a、变更前的公司证件扫描件(代码证或者营业执照)及联系人身份证复印件、变更后的公司证件扫描件(代码证或者营业执照)及新的联系人身份证复印件;身份证复印件需本人签名,公司证件复印件需加盖公章。
- 戴尔数据避风港有效确保用户的数据和网络环境安全
- 5、使用企业名称的英文名称作为域名也是国内许多企业选择域名的一种方式,特别适合一些与计算机、网络和通信相关的行业。
- 只要我们做的是从目前的市场情况选择域名,从简单易记,从个性特征上,我们就可以找到一个好域名进行注册。域名注册进行域名记录和解析以及绑定网站后,客户可以通过URL登录您的网站。
- .net 适用于从事Internet相关的网络服务的机构或公司
- 数据中心基础设施管理(DCIM)五大趋势
- 2、定期提交和投标域名注册。例如,益华网络点击“立即预订”后,平台会抢先为客户注册域名。当然,一个域名可能会被多个客户预订,所以出价最高的人中标。
热门文章
站长推荐
通过 Docker-compose 快速部署 MinIO 保姆级教程
当投资者经过第二阶段的认真学习之后又充满了信心,认为自己可以在市场上叱咤风云地大干一场了。但没想到“看花容易绣花难”,由于对理论知识不会灵活运用.从而失去灵活应变的本能,就经常会出现小赢大亏的局面,结果往往仍以失败告终。这使投资者很是困惑和痛苦,不知该如何办,甚至开始怀疑这个市场是不是不适合自己。在这种情况下,有的人选择了放弃,但有的意志坚定者则决定做最后的尝试。
旧域名的外链是否会对新建站点产生影响?
4、参加域名拍卖会
Nginx配置实践指南:提升性能、组织清晰、操作高效
因为域名解析需要同步到DNS根服务器,而DNS根服务器会不定时刷,只有DNS根服务器刷新后域名才能正常访问,新增解析一般会在10分钟左右生效,最长不会超过24小时,修改解析时间会稍微延长。
二、如何选择合适的域名
公司名字不但要与其经营理念、活动识别相统一,还要能反映公司理念,服务宗旨、商品形象,从而才能使人看到或听到公司的名称就能产生愉快的联想,对商店产生好感。这样有助于公司树立良好的形象。