如何防止常见的Java错误

发表于2022年2月2日
作者:Wander Neto
案例研究

如何防止常见的Java错误

发表于2022年2月2日
作者:Wander Neto
查看资源
查看资源

成为一个更有效率的Java开发者

Java(甲骨文公司)在全球拥有900万开发人员*,是世界上最受欢迎的编程语言之一。许多应用框架都建立在Java之上,因为它是一种非常通用的语言,可以在许多支持Java运行环境(JRE)的不同设备上运行程序--所有Java程序都在这个环境中运行。开发者主导的社区非常活跃,对新程序员的深入支持有助于其不断增长的人气。

由于Java已经存在了很长时间,社区已经花了很多年的时间来开发标准、工具、编码模式,并减轻了开发者一再面临的常见错误。所有这些由社区主导的举措都有一个共同的目标--帮助开发人员在用Java开发应用程序时尽可能地提高工作效率。但是,当涉及到在应用程序代码中应用最佳实践或模式时,责任就在于开发者了。良好实践的执行情况是相当不同的,因此,当社区内意见分歧很大时,很难有一个标准的编码实践方法。开发人员求助于在线社区寻找帮助,有时会在不经意间给你的编码问题提供不安全的解决方案。

为了帮助开发人员安全地解决常见的Java编码问题,我们创建了Sensei --一个IntelliJ插件,用于在专业环境中按照您或您的组织定义的配方(或规则)纠正不良的编码模式。Sensei ,开发人员只需点击一下就能识别并纠正常见的Java错误(Gotchas)。

继续阅读,了解Sensei 如何通过解决一些常见的Java编码错误来提高开发人员的生产力。

一个反复出现的让开发者感到沮丧的错误

这些常见错误的一个例子是对包装物值进行不正确的等价检查。盒式基元的值应该使用等价方法而不是引用比较运算符(==)进行比较,以防止出现意外结果。

作为一个例子,对-128到127范围内的Integer值使用引用比较运算符,(通常)会与equals方法的行为相同。但是,如果我们对这个范围以外的值进行同样的比较,结果就会不同。这是由于Java为上述范围的整数值保持了一个恒定的池。使用equals方法将总是产生预期的结果,因此是正确的比较方式。

在这个例子中,我们错误地使用了运算符(==)来检查相等。

这导致了以下输出。

假的

假的

正确的比较方法是使用等值法。

然后,输出将是。

假的

假的

这种众所周知的最佳实践已经存在了相当长的时间,但在遗留代码中经常被错误地实施,在最不恰当的时候等待着它的丑陋出现。因此,我们创建了配方(或规则),以帮助在本地识别这种不良的编码模式,并使用Sensei ,只需点击一下就可以进行修复。

Sensei 是一个高度可定制的IDE插件,可以在输入时扫描和修复不良代码--有数百个可下载的代码转换和迁移配方(规则),以及一个内置的能力来制作你自己的。有了Sensei ,开发人员可以在输入时纠正不良的代码模式,这样他们就能更快地交付高质量的代码,并最终以一致和标准的方式跨团队和项目编写代码。

Sensei 如何修复此类常见的Java问题

由于Sensei ,允许你创建自己的食谱,我们创建了一个食谱来纠正上述错误。

在这个例子中,我们想找到我们在哪里使用比较运算符(==)的盒式原始类型。

一个Sensei 的配方是这样的(YAML格式)。

以上可以在你输入时搜索反复出现的坏模式,或者整个文件、配置的范围,甚至,整个代码库。一旦发现模式,下一步自然是能够立即修复它,而不必在网上搜索。Sensei ,使你能够创建修复,可以按照指定的方式添加/编辑/删除代码。你甚至可以在你认为合适的时候提供多个修复,允许开发人员在他们认为合适的时候选择最合适的修复。

在我们的例子中,我们想用equals方法而不是运算符(==)来重写比较。

一个可用的修复方法是这样描述的。

它是如何工作的。

以简单的方式实施标准的编码准则

Java Gotchas Cookbook有22个菜谱,可以帮助你避免常见的错误,并保持你的代码干净和安全。它可以检测出对各种Java语言特性和API的不正确或不安全的使用,如对象平等、异常处理、正则表达式和集合。通过采用Sensei 和这本食谱,你可以从一开始就写出更好的代码,甚至,创建你自己的食谱以适应你独特的团队、项目或组织。

这仅仅是Sensei ,用来规范你的项目的许多方法中的一个例子。你可以随时注意在拉动请求中或自己编码时经常遇到的反模式或某些手动代码转换。如果你有一套经常被开发人员遗漏的编码准则,那么你可以将这些准则转化为配方--使开发人员能够自信地应用经批准的代码转换。

现在就安装Sensei ,并启用Java Gotchas Cookbook,以获得高效的开发体验。https://sensei.securecodewarrior.com/cookbooks/scw:java

*2021年,开发商国家的状况,https://www.developernation.net/developer-reports/de20

查看资源
查看资源

作者

旺德-内托

想要更多吗?

在博客上深入了解我们最新的安全编码见解。

我们广泛的资源库旨在增强人类对安全编码技术提升的方法。

查看博客
想要更多吗?

获取关于开发者驱动的安全的最新研究

我们广泛的资源库充满了有用的资源,从白皮书到网络研讨会,让你开始使用开发者驱动的安全编码。现在就去探索它。

资源中心

如何防止常见的Java错误

发表于2022年2月2日
作者:Wander Neto

成为一个更有效率的Java开发者

Java(甲骨文公司)在全球拥有900万开发人员*,是世界上最受欢迎的编程语言之一。许多应用框架都建立在Java之上,因为它是一种非常通用的语言,可以在许多支持Java运行环境(JRE)的不同设备上运行程序--所有Java程序都在这个环境中运行。开发者主导的社区非常活跃,对新程序员的深入支持有助于其不断增长的人气。

由于Java已经存在了很长时间,社区已经花了很多年的时间来开发标准、工具、编码模式,并减轻了开发者一再面临的常见错误。所有这些由社区主导的举措都有一个共同的目标--帮助开发人员在用Java开发应用程序时尽可能地提高工作效率。但是,当涉及到在应用程序代码中应用最佳实践或模式时,责任就在于开发者了。良好实践的执行情况是相当不同的,因此,当社区内意见分歧很大时,很难有一个标准的编码实践方法。开发人员求助于在线社区寻找帮助,有时会在不经意间给你的编码问题提供不安全的解决方案。

为了帮助开发人员安全地解决常见的Java编码问题,我们创建了Sensei --一个IntelliJ插件,用于在专业环境中按照您或您的组织定义的配方(或规则)纠正不良的编码模式。Sensei ,开发人员只需点击一下就能识别并纠正常见的Java错误(Gotchas)。

继续阅读,了解Sensei 如何通过解决一些常见的Java编码错误来提高开发人员的生产力。

一个反复出现的让开发者感到沮丧的错误

这些常见错误的一个例子是对包装物值进行不正确的等价检查。盒式基元的值应该使用等价方法而不是引用比较运算符(==)进行比较,以防止出现意外结果。

作为一个例子,对-128到127范围内的Integer值使用引用比较运算符,(通常)会与equals方法的行为相同。但是,如果我们对这个范围以外的值进行同样的比较,结果就会不同。这是由于Java为上述范围的整数值保持了一个恒定的池。使用equals方法将总是产生预期的结果,因此是正确的比较方式。

在这个例子中,我们错误地使用了运算符(==)来检查相等。

这导致了以下输出。

假的

假的

正确的比较方法是使用等值法。

然后,输出将是。

假的

假的

这种众所周知的最佳实践已经存在了相当长的时间,但在遗留代码中经常被错误地实施,在最不恰当的时候等待着它的丑陋出现。因此,我们创建了配方(或规则),以帮助在本地识别这种不良的编码模式,并使用Sensei ,只需点击一下就可以进行修复。

Sensei 是一个高度可定制的IDE插件,可以在输入时扫描和修复不良代码--有数百个可下载的代码转换和迁移配方(规则),以及一个内置的能力来制作你自己的。有了Sensei ,开发人员可以在输入时纠正不良的代码模式,这样他们就能更快地交付高质量的代码,并最终以一致和标准的方式跨团队和项目编写代码。

Sensei 如何修复此类常见的Java问题

由于Sensei ,允许你创建自己的食谱,我们创建了一个食谱来纠正上述错误。

在这个例子中,我们想找到我们在哪里使用比较运算符(==)的盒式原始类型。

一个Sensei 的配方是这样的(YAML格式)。

以上可以在你输入时搜索反复出现的坏模式,或者整个文件、配置的范围,甚至,整个代码库。一旦发现模式,下一步自然是能够立即修复它,而不必在网上搜索。Sensei ,使你能够创建修复,可以按照指定的方式添加/编辑/删除代码。你甚至可以在你认为合适的时候提供多个修复,允许开发人员在他们认为合适的时候选择最合适的修复。

在我们的例子中,我们想用equals方法而不是运算符(==)来重写比较。

一个可用的修复方法是这样描述的。

它是如何工作的。

以简单的方式实施标准的编码准则

Java Gotchas Cookbook有22个菜谱,可以帮助你避免常见的错误,并保持你的代码干净和安全。它可以检测出对各种Java语言特性和API的不正确或不安全的使用,如对象平等、异常处理、正则表达式和集合。通过采用Sensei 和这本食谱,你可以从一开始就写出更好的代码,甚至,创建你自己的食谱以适应你独特的团队、项目或组织。

这仅仅是Sensei ,用来规范你的项目的许多方法中的一个例子。你可以随时注意在拉动请求中或自己编码时经常遇到的反模式或某些手动代码转换。如果你有一套经常被开发人员遗漏的编码准则,那么你可以将这些准则转化为配方--使开发人员能够自信地应用经批准的代码转换。

现在就安装Sensei ,并启用Java Gotchas Cookbook,以获得高效的开发体验。https://sensei.securecodewarrior.com/cookbooks/scw:java

*2021年,开发商国家的状况,https://www.developernation.net/developer-reports/de20

我们希望得到您的许可,向您发送有关我们产品和/或相关安全编码主题的信息。我们将始终以最谨慎的态度对待您的个人资料,绝不会将其出售给其他公司用于营销目的。

提交
要提交表格,请启用 "分析 "cookies。完成后,请随时再次禁用它们。