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();
}
}
上面的代码里,如果文件找不到,接手人要撞墙的。