编码编成翔的十八般兵器(上)

1. 块里堆上我满满的翔

Java 中有着无数的语句块,这些语句块可以嵌套。于是我们有很多优秀的产翔大师会在这些语句块中不断地嵌套,犹如无数层的俄罗斯套娃。

图片

2. 把翔藏在注释里,有时候它会“惊艳”了世界

有些哥们儿很鸡贼的把一些代码藏在注释里,这些代码可以随时成为定时炸弹。

public static void main(String[] args) {
  String a = "Hello";
  // \u000d a="world";
  System.out.println(a);
  // \u000a a="hello world!";
  System.out.println(a);
}

上面这段代码运行之后,说好的“Hello”呢?

world
hello world!

3. 我家大门常打开,欢迎错误走进来

在 Java 中,如果你想接手一个项目,看到一个父类的字段是非 private 的,而子类还存在同名字段,要注意了,这个项目的前任可能比较渣,你可能会恼火的想给他烧纸。比如:

public class Base {
  public int field = 0;

  public int getField() {
    return field;
  }
}
public class Sub extends Base {
  public int field = 1;

  public int getField() {
    return field;
  }
}

你这样测试下看看

public static void main(String[] args) {
  Sub s = new Sub();
  Base b = s;

  System.out.println(s.field);

  System.out.println(b.field);

  System.out.println(((Sub) b).field);

  System.out.println(((Base) s).field);
}

4. 我抓到了异常,但是我不想处理了,因为我要离职了

有些哥们儿走之前可能人未动心已远,也可能是懒的处理异常,他会给你留下一个谜之空白。

public class EmptyCatchBlockTest {
  public static void main(String[] args) {
    try {
      int a = 4, b = 0;
      int c = a/b;
    } catch(ArithmeticException ae) {
      // ???
    }
  }
}

对不起,兄弟,你留下这种薛定谔的处理是想让人帮你掀桌吗?

5. 只要我不考虑任何意外的情况,那么项目就一定会出意外

有些直性子的人,认为天下万物都可以直来直去,就好像直男只会让女生“多喝热水”一样。所以,他们写的代码非常直率,直接就不考虑意外情况。

  public static void main(String[] args) {
    int a = args.length;
    int b = 42 / a;

    if (a == 1) {
      a = a / (a - a);
    }
    if (a == 2) {
      int c[] = {1};
      c[42] = 99;
    }
}

上边的代码很直率,既不考虑 a 可能为 0 的情况,也不考虑数组越界。直来直去,就好像“我不尴尬,尴尬的就是别人”。

6. 我要把方法里可能的异常藏起来不告诉任何人

还有些哥们也不知道是不是有什么见不得人的事情,该抛出来的异常从来不抛出来,导致你根本不知道发生了什么事情。

InputStream is = null;
try {
  is = new FileInputStream("一个文件.txt");
} catch (FileNotFoundException e) {

}

int b;
try {
  while ((b = is.read()) != -1) {
  }
} catch (IOException e) {
  e.printStackTrace();
} finally {
  try {
    is.close();
  } catch (IOException e) {
    e.printStackTrace();
  }
}

上面的代码里,如果文件找不到,接手人要撞墙的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值