建议1

  1. 包名全部小写
  2. 类名首字母全大写
  3. 常量全部大写并用下划线
  4. 变量采用驼峰命名法则

建议2 莫让常量蜕变成变量

  1. public class TestFinalVar {
  2. public static void main(String[] args) {
  3. System.out.println(Const.RAND_CONST);
  4. }
  5. }
  6. interface Const{
  7. # 常量 每次运行时都是变量
  8. public static final int RAND_CONST= new Random().nextInt();
  9. }

建议3 三元操作符的类型务必一致

  1. public class TestThreeVar {
  2. public static void main(String[] args) {
  3. int i = 80;
  4. String s = String.valueOf(i < 100 ? 90:100);
  5. // 前后类型不一致
  6. String s1 = String.valueOf(i < 100 ? 90:100.0);
  7. System.out.println(s.equals(s1));
  8. }
  9. }

建议4 避免带有变长参数的方法重载

  1. import java.text.NumberFormat;
  2. public class TestVar1 {
  3. //
  4. public void calPrice(int price, int discount) {
  5. float knockdownPrice = price * discount / 100.0F;
  6. System.out.println("111");
  7. System.out.println(formateCurrency(knockdownPrice));
  8. }
  9. // 变长参数
  10. public void calPrice(int price, int ... discounts) {
  11. float knockdownPrice = price;
  12. System.out.println("222");
  13. for(int discount:discounts) {
  14. knockdownPrice = knockdownPrice * discount / 100;
  15. }
  16. System.out.println(formateCurrency(knockdownPrice));
  17. }
  18. private String formateCurrency(float price) {
  19. return NumberFormat.getCurrencyInstance().format(price/100);
  20. }
  21. public static void main(String[] args) {
  22. TestVar1 t = new TestVar1();
  23. t.calPrice(48999, 75);
  24. }
  25. }

建议5 别让null值和空值威胁到变长方法

建议6 警惕自增的陷阱

  1. public class TestPP {
  2. public static void main(String[] args) {
  3. int count = 0;
  4. for ( int i = 0; i < 10; i++ ) {
  5. // 自增值为0
  6. count = count++;
  7. }
  8. System.out.println(count);
  9. }
  10. }

建议7 少用静态导入

  1. 对于静态导入,一定要遵循两个规则
  2. 1.不使用*(星号)通配符,除非是导入静态常量类
  3. 2.方法名是具体明确,清晰表象意义的工具类

建议8 不要在本类中覆盖静态导入的变量和方法

  1. 最短路径 原则:
  2. 如果能够在本类中查找到的变量,常量,方法,就不会到其他包或父类,接口查找,以确保类中的属性,方法优先

建议9 养成良好习惯,显示声明UID

  1. 序列化 反序列化--
  2. 显示声明serialVersionUID可以避免对象不一致,但尽量不要以这种方式向JVM"撒谎"

建议10 避免用序列化类在构造函数中为不变量赋值

  1. 在序列化类中,不使用构造函数为final变量赋值