最初に例外について。
Javaの例外といえばNullPointerException、NullPointerExceptionといえばJavaの例外と言われるほどNullPointerExceptionはJava開発でよく発生するが、この例外をつぶすのは初心者には意外と難しい。何がnullなのか分からないからだ。だがコツをつかめば簡単に分かる。
NullPointerExceptionが発生する箇所はnullが格納された変数のメソッドである。これ以外にない。
str=str.substring(2,3);
エラーログがNullPointerExceptionが発生したのはこの行だと示していたとしよう。この行に変数はメソッドはsubstringしかない。とすればstrにnullが混入しているとすぐにわかる。
では次の行でなNullPointerExceptionが発生していたならどうか。
v1.m1(v2).m2();
このコードにはメソッドが2つある。このままではNullPointerExceptionがどちらで発生しているか分からない。そこで次のようにリファクタリングする必要がある。
v3=v1.m1(v2);
v3.m2();
これならメソッドが1行にある1つとなるため、どちらでNullPointerExceptionが起きたかがわかる。
良いコードとは読みやすいだけでなく解析しやすいコードなのである。
Javaの例外といえばNullPointerException、NullPointerExceptionといえばJavaの例外と言われるほどNullPointerExceptionはJava開発でよく発生するが、この例外をつぶすのは初心者には意外と難しい。何がnullなのか分からないからだ。だがコツをつかめば簡単に分かる。
NullPointerExceptionが発生する箇所はnullが格納された変数のメソッドである。これ以外にない。
str=str.substring(2,3);
エラーログがNullPointerExceptionが発生したのはこの行だと示していたとしよう。この行に変数はメソッドはsubstringしかない。とすればstrにnullが混入しているとすぐにわかる。
では次の行でなNullPointerExceptionが発生していたならどうか。
v1.m1(v2).m2();
このコードにはメソッドが2つある。このままではNullPointerExceptionがどちらで発生しているか分からない。そこで次のようにリファクタリングする必要がある。
v3=v1.m1(v2);
v3.m2();
これならメソッドが1行にある1つとなるため、どちらでNullPointerExceptionが起きたかがわかる。
良いコードとは読みやすいだけでなく解析しやすいコードなのである。