编写高质量java代码_编写高质量的Java代码

本文介绍了Java开发中的一系列最佳实践,包括变量命名规范、常量使用、三元运算一致性、避免变长参数问题、处理null与空值、静态导入管理、构造函数简化、异常处理、多线程注意事项等,旨在帮助开发者写出更高效、可维护的代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java 开发通用方法和准则

不要在变量和常量出现易混淆字母:int i=1l;

不要让常量变成变量;

三元操作符的值类型务必保持一致;

避免带有变长参数的方法重载:Java 5 引入了变长参数,varags, 用…表示,变长参数必须是最后一个参数,一个方法不能有多个变长参数;

别让null和空值影响到变长方法,主要出现在在变长方法的重载;

少用静态导入:如import static X.X.X.过多的使用可维护性下降

不要再本类中覆盖静态导入的变量和方法,小心编译器的最短路径原则:能在本类中查找到的变量、常量、方法就不会从其他包或父类中查找,确保本类的属性和方法优先。

避免在序列化的类在构造函数中为final常量赋值

易变业务使用脚本语言编写:可以随时发布不用重新部署

基本类型

用偶数判断,不用奇数判断:用i%2==0 不用i%2==1,因为i=-1时会判断成偶数

用整数类型处理货币:先扩大N倍处理运算,展示时除N倍

注意边界:如int n=1000, int input+n<2000,当输入input超过Int最大值后,input+n为负数依然满足条件

不要让四舍五入亏了一方,用RoundingMode类可避免,它可提供Round模式

Java中==是判断2个操作数是不是相等,如果是对象,则判断引用是不是一样

类、对象、方法

在接口中不要存在实现代码;

静态变量一定要先声明在赋值

不要复写静态方法

构造函数尽量简化,尽可能不抛异常,不做复杂算法

避免在构造函数中初始化其他类

使用构造代码块精炼程序:没有任何前缀,直接用{}抱起,编译器会把构造代码块直接插入构造函数的最前端;但遇到this关键字则不插入构造函数。

使用静态内部类提高封装性

让多重继承成为现实:用内部类实现

让工具类不可实例化:除了设置构造函数为private,还抛异常

使用序列化实现对象拷贝

覆写equals必须实现HashCOde方法

推荐覆写tostring方法

字符串

String对象直接赋值,不用new

Java为了避免在一个系统中产生大量String对象,设计了string池。创建机制:创建一个字符串时,先检查池中是否有字面值相等的字符串,有的话则指向该引用;无的话才创建。

Intern方法会检查当前对象在字符串对象池中是否有字面值相等的字符串,有的话则指向该引用;无的话才放在池中。

准确适用String、StringBuffer、StringBuilder

String是不可改变的量,创建后不再修改;

StringBuffer是一个可变字符串,StringBuffer的append与String的“+”的区别的,+之后对应的引用变了,StringBuffer的引用不变值在变。

StringBuilder是线程不安全的, StringBuffer是线程安全的

建议使用UTF8编码

中文字符串排序最好指定Collector排序

Comparator c = Collector.getInstance(Local.CHINA);

Arrays.sort(sre,c)

异常

提倡异常封装:尽量try catch 不抛出

采用异常链传递异常

不要再finally中处理返回值

多线程合并发

不推荐覆写start方法

不用过时的stop方法停止线程

性能和效率

不在循环条件中计算

除非必要,不要克隆对象

调整JVM参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值