建议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变量赋值