五大原则让你的代码不再受bug的困扰
牢记以下五项基本原则,能够帮助大家尽可能减少代码中的bug。
Java编程语言的人气自然无需质疑,从Web应用到Android应用,这款语言已经被广泛用于开发各类应用及代码中的复杂功能。
不过在编写代码时,bug永远是困扰每一位从业者的头号难题。本文我们将分享五项java编程基本元原则帮助大家尽可能减少代码中的bug,希望大家能轻松地减少Java开发中的bug数量。
原则一:不要依赖初始化
在Java中,开发者常常依赖构造函数进行对象初始化。不过这其实是一种常见误区。我们完全可以在无需调用构造函数的情况下,通过多种方式实现对象分配。
下面来看几种常用方式:
(1) 大家可以将所有变量声明为私有。要访问该类外的对象,大家可使用GET与SET方法。
(2) 对每个对象,编写一个新的私有boolean变量并对其进行初始化。
(3)编写一个非构造函数类,其将确保每个对象会在接受调用之前进行初始化。
原则二:保护类、方法与变量
在代码当中,类、方法与变量分为私有与公共两类。私有类无法轻松进行访问,这使其成为代码中的高安全性点。不过公共方法与变量则易于方法,也因此常常成为攻击突破口。因此,请尽可能限制其范围。
请记住,只在必要时开放类、方法与变量。
原则三:永远对范围进行预定义
大多数开发者完全依赖于软件包自身的范围设定,事实上我们应当坚持对代码范围进行预定义。很多类本身并非完全封闭,这意味着攻击者能够对其施以攻击。黑客可以利用单一漏洞插入自己的类,进而从代码中提取敏感信息。JVM在默认情况下即不会封闭,不过允许大家在该软件包内进行类封闭。
原则四:避免使用内部类
一般来讲,开发者会在同一软件包内其它类需要时使用内部类。这些内部类通常可供同一软件包内全部类进行访问,由此可能引发的问题在预定义代码范围部分已经提到。因此,同样请仅在必要时使用内部类。
原则五:确保类不可克隆
Java提供一项功能,用于在需要时对自有类进行克隆。然而这项功能往往被黑客所利用,其能够使用java.lang.Cloneable从代码中复制代码实例并窃取必要信息。
要解决这个问题,大家只需要在代码中的每个类中添加以下代码。
public final void clone()throws
java.lang.CloneNotSupportedException {
thrownewjava.lang.CloneNotSupportedException();
}
如果大家希望自己的class具备可克隆性,同时仍然尽可能避免安全问题,那么则可自行定义克隆方法,并将其设置为final。
如果大家在自己的某个超类中使用了nonfinal克隆方法,则请按以下方式定义该方法:
public final void clone()
throwsjava.lang.CloneNotSupportedException {
super.clone(); }
当然,没人能100%掌握Java的全部奥秘,但关注上述编程原则及实践,能够帮助大家更为有效地降低代码内bug数量。
WEB前端学习交流群21 598399936
转载于:https://www.cnblogs.com/luludehuhuan/p/6269223.html
五大原则让你的代码不再受bug的困扰相关推荐
- 关窗户和代码——学习12字原则:授之以欲,受之以愉,渔之以渔
关于关纱窗关窗户事情引发的五个讨论: ● 关窗户和写代码什么关系? ● 软件设计原则,有什么? ● 为什么要有"开闭原则"? ● 学习的12字原则,都是什么? ● 迪米特法则,是什 ...
- 深入理解JavaScript系列(7):S.O.L.I.D五大原则之开闭原则OCP
前言 本章我们要讲解的是S.O.L.I.D五大原则JavaScript语言实现的第2篇,开闭原则OCP(The Open/Closed Principle ). 开闭原则的描述是: Software ...
- 面向对象的三个基本特征是:封装、继承、多态及其五大原则
阅读数:634 面向对象的三个基本特征是:封装.继承.多态 封装 封装最好理解了.封装是面向对象的特征之一,是对象和类概念的主要特性. 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方 ...
- java五大原则_Java成长第五集--面向对象设计的五大原则
S.O.L.I.D 是面向对象设计(OOD)和面向对象编程(OOP)中的几个重要编码原则(Programming Priciple)的首字母缩写.以下图说明: 下面就个人的理解来说说这五大原则的含义到 ...
- 设计模式原则(单一、开放封闭、里氏代换、依赖倒转、迪米特法则五大原则)...
原文:设计模式原则(单一.开放封闭.里氏代换.依赖倒转.迪米特法则五大原则) 单一职责原则 单一职责原则,就一个类而言,应该仅有一个引起它变化的原因. 如果一个类承担的职责过多,就等于把这些职责耦 ...
- PHP面向对象设计的五大原则
面向对象设计的五大原则:单一职责原则.接口隔离原则.开放-封闭原则.替换原则.依赖倒置原则.这些原则主要是由Robert C.Martin在<敏捷软件开发--原则.方法.与实践>一书中总结 ...
- 十分钟上手 React+MirrorX,从此前端大神代码不再难懂 | 原力计划
作者 | 杨若瑜 来源 | CSDN博客,责编 | 夕颜 头图 | 付费下载自视觉中国 出品 | CSDN(ID:CSDNnews) 随着React的普及,很多大厂的前端必备React相关知识,甚至已 ...
- solid 设计原则 php,面向对象设计SOLID五大原则
今天我给大家带来的是面向对象设计SOLID五大原则的经典解说. 我们知道,面向对象对于设计出高扩展性.高复用性.高可维护性的软件起到很大的作用.我们常说的SOLID五大设计原则指的就是: S = 单一 ...
- 面向对象:三大特性与五大原则
面向对象:三大特性与五大原则 面向对象(Object Oriented, OO)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面.应用结构.应用平台.分布 ...
最新文章
- Leetcode 62. Unique Paths
- 判断一个数是否是2的平方
- SAP HANA Database Explorer 里 SQL console 的用法
- Event Organization Site - To be published on 4th August
- MySQL 8.0.12 有什么新内容?
- 6. 以下耦合度中最松散的耦合是_什么是程序设计中的高内聚、低耦合?
- centos6.5 x86_64安装rsyslog + loganalyzer
- 程序员得到的报酬与他们的生产力不成正比
- xp系统怎么定时锁定计算机,电脑怎么设置自动锁屏_XP系统电脑怎么设置自动锁屏...
- ArcGIS土地利用重分类(一)简单的reclass by table方法
- php库函数是什么,PHP常用库函数
- 注册apple id方法
- 五线舵机驱动程序_16路舵机驱动板程序使用说明
- 智慧城市投入与产出相关分析预评估模型研究
- Android系统定位获取经纬度
- amlogic logo amlogic rk tvbox 电视盒 定制化开发(一) 开机logo 定制
- X-Space二级(三级)域名配置
- 6、语句(if、switch、for、while、for...in/of、do-while、break、continue、label、return、throw、try-catch-finally、w
- Silvaco TCAD仿真9——半导体PN结仿真
- 蒲公英内测托管:从隐私合规开始,让我们的数据安全流通
热门文章
- 儿童手表怎么删除联系人_华为儿童手表4X体验:与你一起守护孩子的成长,带娃不再辛苦...
- kvm虚拟化_KVM 虚拟化环境搭建 - WebVirtMgr
- LeetCode 1024. 视频拼接(动态规划/贪心)
- LeetCode MySQL 185. 部门工资前三高的所有员工(dense_rank)
- 泰坦尼克号生存预测入门
- LeetCode 1016. 子串能表示从 1 到 N 数字的二进制串(bitset)
- 如何选择数据结构和算法(转)
- 自动化运维Shell课堂笔记
- Java基础10(反射)
- 征稿 | 软件学报专刊征文:知识赋能的信息系统