动力节点Java远程基础班免费赠送学习名额,机会就在眼前,快来报名吧,名额有限,先到先得。

Java编程语言在IT行业毋庸置疑是企业中不可缺少的,从Web应用到Android应用,这款语言已经被广泛用于开发各类应用及代码中的复杂功能。

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

  不要依赖初始化

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

  下面来看几种常用方式:

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

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

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

  避免使用内部类

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

  保护类、方法与变量

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

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

  永远对范围进行预定义

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

  确保类不可克隆

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

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

publicfinalvoidclonethrowsJava.lang.CloneNotSupportedException{thrownewJava.lang.CloneNotSupportedException;}

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

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

publicfinalvoidclonethrowsJava.lang.CloneNotSupportedException{super.clone;}

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

Java程序员如何在编码中减少bug存在相关推荐

  1. 程序员从复杂代码中找BUG的5种方法,你用过几个?

    有不少的新手程序员,刚开始都是从修BUG开始做起的. 修bug有助于熟悉项目,了解大概哪些类参与了执行线路,相互调用关系又是如何,结构设计上有什么特点. 对于新手程序员而言,在复杂代码中找BUG是一个 ...

  2. 2021普通Java程序员如何在行业中脱颖而出?阿里进阶架构师不传之秘终于开源!

    "倒挂"一词大家都不陌生,在程序员领域里更是屡见不鲜,尤其是在公司工作了一段时间后就会发现,后来的每个新人的工资都比自己高,你的工资是15k,新人的工资是30k,奈何人家能力强呢. ...

  3. 2019年Java程序员就业分析

    序言 据调查发现,2018年的Java程序员的确很风光,具体体现在市场需求和平均工资的上涨上,对于进可攻前端,后可守后端大本营的Java程序员而言,虽然供应逐年上涨,但是市场似乎对他们依然青睐有加. ...

  4. 2017年 Java 程序员,风光背后的危机

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 本文来自100offer微信公众号,已获作者授权转载. 不得不承认,经历过行业的飞速发展期, ...

  5. Java程序员就业分析

    据调查发现,2019年的Java程序员的确很风光,具体体现在市场需求和平均工资的上涨上,对于进可攻前端,后可守后端大本营的Java程序员而言,虽然供应逐年上涨,但是市场似乎对他们依然青睐有加. 但这些 ...

  6. java中bigdecimal除以int类型的数据怎么实现_大部分Java程序员都会忽略的几个问题,你中招没?...

    1. 正确使用 equals 方法 Object的equals方法容易抛空指针异常,应使用常量或确定有值的对象来调用 equals. 举个例子: 运行上面的程序会抛出空指针异常,但是我们把第二行的条件 ...

  7. 作为一名Java程序员,我为何不在生产项目中转向Go?

    自Google在2009年发布Go语言的第一个正式版之后,这门语言就以出色的语言特性受到大家的追捧,尤其是在需要高并发的场景下,大家都会想到是不是该用Go.随后,在国内涌现出了一批以七牛为代表的使用G ...

  8. java程序员面试中的5个杀手锏问题

    java程序员面试中的5个杀手锏问题,不管你去面试的频率如何,下面这五个问题是每个软件工程师都应该问的--将有助于你确定自己在这家公司长期工作是否会合作愉快. 你们的企业文化是什么? 你每天将会有10 ...

  9. Java程序员的日常—— 垃圾回收中引用类型的作用

    在Java里面,是不需要太过于关乎垃圾回收,但是这并不意味着开发者可以不了解垃圾回收的机制,况且在java中内存泄露也是家常便饭的事情.因此了解垃圾回收的相关知识就显得很重要了. 引用,在垃圾回收中是 ...

最新文章

  1. Code128 Fontware条码控件介绍
  2. 小程序开发系类之基础部分-开发工具
  3. div中定义局部变量_说说 Go 中的变量(附粗制滥造面试题)
  4. maven install 没反应
  5. 加工食品和饮料防腐剂行业调研报告 - 市场现状分析与发展前景预测
  6. 如何利用Printconfig dll:从 iPhone 到 NT AUTHORITY\SYSTEM 的真实案例
  7. TCP模块如何处理数据包
  8. 探索ASP.NET MVC5系列之~~~4.模型篇---包含模型常用特性和过度提交防御
  9. 看不懂JDK8的流操作?5分钟带你入门(转)
  10. 计算机二级真题c.doc,2018计算机二级C语言考试真题试卷汇总.doc
  11. The Podfile (Podfile 的写法和规范)
  12. php网站静态页面模板,用PHP制作静态网站的模板框架
  13. 手机qq怎么添加相册表情包_手机qq怎么制作表情包
  14. 基于单片机的数字万年历设计
  15. Python实现Singleton模式的几种方式
  16. C#脚本引擎CS-Script
  17. 《大脑修复术》读书笔记
  18. cad自动填写页码lisp,CAD 中 如何自动添加页码?
  19. c语言如何读出字符串中的数据,如何把数据存在字符串中
  20. 开放是一种激情――北京软件自由日纪实

热门文章

  1. [代码示例]用Fine Uploader+ASP.NET MVC实现ajax文件上传
  2. android有错.怎么办
  3. dell的1501和640m,买哪个好呢?
  4. JS中数据类型、内置对象、包装类型对象、typeof关系
  5. 【算法导论】学习笔记——第16章 贪心算法
  6. 学习《html5.css3.0》网页布局和样式精粹(第二天)
  7. hadoop 伪分布模式
  8. 3 分钟搞定 Android Push
  9. The import com.google cannot be resolved解决方法
  10. Android Handler Runnable和Thread之间的区别和联系详解