5カ条で学ぶ 堅牢性を考慮したjavaコードを書く技術€¦ ·...

1
2 5カ条で学ぶ 堅牢性を考慮したJavaコードを書く技術 Acroquest Technology 谷本 心 図1●プログラムの堅牢性を調べる5つのポイント あなたのコードは大丈夫か? System.exitを直接呼んでいないか System.out.printlnを直接呼んでいないか toStringメソッドを実装しているか 例外処理を行なっているか throws Exceptionだけを書いていないか この連載では、Javaプログラミングの改善方法やテク ニックについて、Java の良いコード(イケてるコード)として 「読みやすいコード」「拡張しやすいコード」「性能を考慮 したコード」を書く技術を解説してきました。性能を考慮し たコードが書けるようになったら次に進みましょう。次のス テップは、プログラムの堅牢性を考慮することです。 5カ条で学ぶ堅牢性を考慮したコード せっかく読みやすいコードや性 能を考 慮したコードが 書けるようになっても、プログラムが意図しない個所で終 了してしまったり、問題発生時に原因を調査できなかった りするコードを書いてしまっては、障害などに耐性が低い コードが完 成してしまいます。これらは、 堅 牢 性がない コードと呼べるでしょう。 堅牢性を考慮していない例を図1 に挙げます。あなた のコードは大 丈 夫でしょうか?当てはまるものがあったら、 これから説明する問題点と、その改善方法を実践してく ださい。まずは、System.exitメソッドを直接呼んでいる 例から紹介しましょう。 System.exitは直接呼ばない アプリケーションを終了させる処理には、System.exit メソッドが使えます。 例えば、リスト1 のようなコードを見 たことがある人も多いでしょう。この System.exitメソッド は、Java の入門書や簡単なサンプルプログラムでよく見か けます。しかし、System.exitメソッドを乱用すべきではあ りません。なぜでしょうか。 System.exitメソッドは、Java 仮想マシン(JVM)自体 を止めてしまうメソッドです。ごく簡単なテストプログラムな らまだしも、もしサーバー上で動くアプリケーションを開発 していたとしたら、サーバー自体を止めてしまいかねない 凶悪な処理になるのです。 この問題への対策としては、System.exitメソッドの利 用を止めて、適切な例外処理を記述することです。例 外処理については後述するので、ここでは割愛します。 System.out.printlnも直接呼ばない 先に挙げたSystem.exitメソッド以上に、入門書や簡 単なサンプルプログラムで多用されるメソッドが、System. out.println(以降、長いのでsysoutと記述します)です。 例えば、リスト2 のようなコードはよく見かけるコードでしょ う。実は、sysoutも深く考えずに多用することは、お勧 めできません。 リスト2 の問題点は、sysout で出力するメッセージにあ ります。sysout が出力するメッセージは、出力先や出力 フォーマットの制御が難しいのです。例えば、Webアプリ ケーションや Androidアプリケーションを開発していた場 合、sysout で表示するメッセージはどこに出力されるので しょうか?おそらくWebアプリとAndroidアプリでは、全く 別の場所に表示されてしまいます。sysoutを何も考えず に書いてしまうプログラマは、一 体メッセージがどこに出 NIKKEI SOFTWARE 2012.10 105

Upload: others

Post on 03-Jun-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 5カ条で学ぶ 堅牢性を考慮したJavaコードを書く技術€¦ · 堅牢性を考慮したJavaコードを書く技術 Acroquest Technology 谷本 心 図1 プログラムの堅牢性を調べる5つのポイント

2 3 4 5

2 3 4 5

5カ条で学ぶ堅牢性を考慮したJavaコードを書く技術Acroquest Technology

谷本 心

図1●プログラムの堅牢性を調べる5つのポイント

あなたのコードは大丈夫か?

System.exitを直接呼んでいないか

System.out.printlnを直接呼んでいないか

toStringメソッドを実装しているか

例外処理を行なっているか

throws Exceptionだけを書いていないか

 この連載では、Javaプログラミングの改善方法やテクニックについて、Javaの良いコード(イケてるコード)として「読みやすいコード」「拡張しやすいコード」「性能を考慮したコード」を書く技術を解説してきました。性能を考慮したコードが書けるようになったら次に進みましょう。次のステップは、プログラムの堅牢性を考慮することです。

5カ条で学ぶ堅牢性を考慮したコード せっかく読みやすいコードや性能を考慮したコードが書けるようになっても、プログラムが意図しない個所で終了してしまったり、問題発生時に原因を調査できなかったりするコードを書いてしまっては、障害などに耐性が低いコードが完成してしまいます。これらは、堅牢性がないコードと呼べるでしょう。 堅牢性を考慮していない例を図1に挙げます。あなたのコードは大丈夫でしょうか?当てはまるものがあったら、これから説明する問題点と、その改善方法を実践してください。まずは、System.exitメソッドを直接呼んでいる例から紹介しましょう。

System.exitは直接呼ばない アプリケーションを終了させる処理には、System.exitメソッドが使えます。例えば、リスト1のようなコードを見たことがある人も多いでしょう。このSystem.exitメソッドは、Javaの入門書や簡単なサンプルプログラムでよく見かけます。しかし、System.exitメソッドを乱用すべきではありません。なぜでしょうか。 System.exitメソッドは、Java仮想マシン(JVM)自体を止めてしまうメソッドです。ごく簡単なテストプログラムならまだしも、もしサーバー上で動くアプリケーションを開発していたとしたら、サーバー自体を止めてしまいかねない

凶悪な処理になるのです。 この問題への対策としては、System.exitメソッドの利用を止めて、適切な例外処理を記述することです。例外処理については後述するので、ここでは割愛します。

System.out.printlnも直接呼ばない 先に挙げたSystem.exitメソッド以上に、入門書や簡単なサンプルプログラムで多用されるメソッドが、System.out.println(以降、長いのでsysoutと記述します)です。例えば、リスト2のようなコードはよく見かけるコードでしょう。実は、sysoutも深く考えずに多用することは、お勧めできません。 リスト2の問題点は、sysoutで出力するメッセージにあります。sysoutが出力するメッセージは、出力先や出力フォーマットの制御が難しいのです。例えば、WebアプリケーションやAndroidアプリケーションを開発していた場合、sysoutで表示するメッセージはどこに出力されるのでしょうか?おそらくWebアプリとAndroidアプリでは、全く別の場所に表示されてしまいます。sysoutを何も考えずに書いてしまうプログラマは、一体メッセージがどこに出

NIKKEI SOFTWARE 2012.10 105