五项最佳实践让您的Java代码免受bug困扰

译文
开发 后端
Java编程语言的人气自然无需质疑,不过在编写代码时,bug永远是困扰每一位从业者的头号难题。在今天的文章中,我们将分享五贡最佳实践,希望帮助大家更为轻松地减少Java开发中的bug数量。

【51CTO.com快译】牢记以下各项基本原则,能够帮助大家尽可能减少代码中的bug。

Java编程语言的人气自然无需质疑,从Web应用到Android应用,这款语言已经被广泛用于开发各类应用及代码中的复杂功能。

[[176412]]

不过在编写代码时,bug永远是困扰每一位从业者的头号难题。在今天的文章中,我们将分享五贡最佳实践,希望帮助大家更为轻松地减少Java开发中的bug数量。

原则一:不要依赖初始化

在Java中,开发者常常依赖构造函数进行对象初始化。不过这其实是一种常见误区。我们完全可以在无需调用构造函数的情况下,通过多种方式实现对象分配。

下面来看几种常用方式:

•    大家可以将所有变量声明为私有。要访问该类外的对象,大家可使用GET与SET方法。

•    对每个对象,编写一个新的私有boolean变量并对其进行初始化。

•    编写一个非构造函数类,其将确保每个对象会在接受调用之前进行初始化。

原则二:保护类、方法与变量

在代码当中,类、方法与变量分为私有与公共两类。私有类无法轻松进行访问,这使其成为代码中的高安全性点。不过公共方法与变量则易于方法,也因此常常成为攻击突破口。因此,请尽可能限制其范围。

请记住,只在必要时开放类、方法与变量。

原则三:永远对范围进行预定义

大多数开发者完全依赖于软件包自身的范围设定,事实上我们应当坚持对代码范围进行预定义。很多类本身并非完全封闭,这意味着攻击者能够对其施以攻击。黑客可以利用单一漏洞插入自己的类,进而从代码中提取敏感信息。JVM在默认情况下即不会封闭,不过允许大家在该软件包内进行类封闭。

原则四:避免使用内部类

一般来讲,开发者会在同一软件包内其它类需要时使用内部类。这些内部类通常可供同一软件包内全部类进行访问,由此可能引发的问题在预定义代码范围部分已经提到。因此,同样请仅在必要时使用内部类。

原则五:确保类不可克隆

Java提供一项功能,用于在需要时对自有类进行克隆。然而这项功能往往被黑客所利用,其能够使用java.lang.Cloneable从代码中复制代码实例并窃取必要信息。

要解决这个问题,大家只需要在代码中的每个类中添加以下代码。

 

  1. public final void clone()throws 
  2.  
  3. java.lang.CloneNotSupportedException { 
  4.  
  5.     thrownewjava.lang.CloneNotSupportedException(); 
  6.  

如果大家希望自己的class具备可克隆性,同时仍然尽可能避免安全问题,那么则可自行定义克隆方法,并将其设置为final。

如果大家在自己的某个超类中使用了nonfinal克隆方法,则请按以下方式定义该方法:

  1. public final void clone() 
  2.  
  3. throwsjava.lang.CloneNotSupportedException { 
  4.  
  5.     super.clone(); } 

当然,没人能100%掌握Java的全部奥秘,但关注上述编程原则及实践,能够帮助大家更为有效地降低代码内bug数量。

同志们,加油!

原文标题:5 Best Practices For Writing Bug-Free Java Code      原文作者:Malini Somra

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

责任编辑:王雪燕 来源: 51CTO
相关推荐

2017-04-12 22:19:20

2015-10-28 13:28:57

2015-09-21 09:21:07

2020-03-16 08:48:18

Kubernetes容器云原生

2019-07-30 09:00:00

Snowflake数据库性能调优

2017-12-14 08:31:41

DevOps数据职能JavaScript

2016-12-13 12:15:20

数据中心大数据

2012-05-08 16:40:46

Windows XP系统

2021-12-04 23:10:02

Java代码开发

2016-12-21 09:33:02

关键提示软件Bug

2021-06-29 16:12:21

词: 云架构混合云云计算

2010-09-30 14:51:02

保护数据安全

2022-05-12 15:43:08

数据安全数字化黑客

2010-09-09 13:15:59

提高VPN质量

2022-09-07 14:44:55

物联网网络安全

2016-04-18 10:25:53

DevOps自动化

2022-02-13 00:24:33

开发VueJavaScrip

2023-06-27 10:21:14

2023-03-02 08:47:31

IT预算热点

2011-11-18 09:42:29

Ajax
点赞
收藏

51CTO技术栈公众号