建议1
包名全部小写
类名首字母全大写
常量全部大写并用下划线
变量采用驼峰命名法则
建议2 莫让常量蜕变成变量
public class TestFinalVar {
public static void main(String[] args) {
System.out.println(Const.RAND_CONST);
}
}
interface Const{
# 常量 每次运行时都是变量
public static final int RAND_CONST= new Random().nextInt();
}
建议3 三元操作符的类型务必一致
public class TestThreeVar {
public static void main(String[] args) {
int i = 80;
String s = String.valueOf(i < 100 ? 90:100);
// 前后类型不一致
String s1 = String.valueOf(i < 100 ? 90:100.0);
System.out.println(s.equals(s1));
}
}
建议4 避免带有变长参数的方法重载
import java.text.NumberFormat;
public class TestVar1 {
//
public void calPrice(int price, int discount) {
float knockdownPrice = price * discount / 100.0F;
System.out.println("111");
System.out.println(formateCurrency(knockdownPrice));
}
// 变长参数
public void calPrice(int price, int ... discounts) {
float knockdownPrice = price;
System.out.println("222");
for(int discount:discounts) {
knockdownPrice = knockdownPrice * discount / 100;
}
System.out.println(formateCurrency(knockdownPrice));
}
private String formateCurrency(float price) {
return NumberFormat.getCurrencyInstance().format(price/100);
}
public static void main(String[] args) {
TestVar1 t = new TestVar1();
t.calPrice(48999, 75);
}
}
建议5 别让null值和空值威胁到变长方法
建议6 警惕自增的陷阱
public class TestPP {
public static void main(String[] args) {
int count = 0;
for ( int i = 0; i < 10; i++ ) {
// 自增值为0
count = count++;
}
System.out.println(count);
}
}
建议7 少用静态导入
对于静态导入,一定要遵循两个规则
1.不使用*(星号)通配符,除非是导入静态常量类
2.方法名是具体明确,清晰表象意义的工具类
建议8 不要在本类中覆盖静态导入的变量和方法
最短路径 原则:
如果能够在本类中查找到的变量,常量,方法,就不会到其他包或父类,接口查找,以确保类中的属性,方法优先
建议9 养成良好习惯,显示声明UID
序列化 反序列化--
显示声明serialVersionUID可以避免对象不一致,但尽量不要以这种方式向JVM"撒谎"
建议10 避免用序列化类在构造函数中为不变量赋值
在序列化类中,不使用构造函数为final变量赋值