nDiki : 2011年02月02日

2011年2月2日 (水)

例外処理機構は刃物だ

More Joel on Software

昔は例外処理機構(try で catch で throw、throw)を好んで使って設計・実装していたが、最近はできれば使わない方がいいかなと思っている。 あれは刃物だ。気違いに刃物だ。宇宙戦艦ヤマトだ。

全体が見渡せるか管理下における規模のプログラムでは有効だが、そうではない場合はあれはヤバイ。面倒。そして落ちる。

Joel Spolsky の More Joel on Software「間違ったコードは間違って見えるようにする」に例外処理について書かれているけど、理由としてはだいたいその主張に近い。

Google C++スタイルガイドも C++例外処理機構を使わないとしている。

呼び出し先から一体何が throw されてくるのか?

呼び出し先ツリーを全部辿らないとどんな時に何が throw されてくるかわからない。

ドキュメンテーションコメントにおいてメソッドが何を throw するか説明されているからそれを見ればいい? それって信用できる? 自分は今書いているメソッドの呼び出し先で throw される可能性のある例外とメソッドで throw する可能性のある例外を、そのメソッドのドキュメンテーションコメントに毎回きちんと書いてる? コードの変更を反映させてる?

え? throws clause?

呼び出し元できちんと catch してくれるの?

今書いているメソッドで、例外を throw したくなった。 でもこれってきちんと catch されるの? 呼び出し元ツリーを全て確認して、必要があれば catch を追加しなければならない。さもなけらば……落ちるよね。

え? とりあえず全ての型を catch して中の例外処理が空になっているそのブロック何?

ということで

例外処理機構を使うと、頻繁に深くコードをチェックしなければならなくなる。

いや便利だしスマートに書けるし、言語/ライブラリ的に使わざるを得ない時もあるし、使う時は使うけどね。

die;

スポンサード リンク

今年は出遅れた花粉症の確保

今年は何だか出遅れて2月に入ってからの今日、病院に行って花粉症をもらってきた(去年は1月16日)。

先生と相談して例年通り。

点鼻は今まで使ってこなかったので、必要性を感じたらまた通院するということで。

さっそく今日の夜から服用。

去年までマスクはユニチャームの立体マスクを使っていたんだけれど、今年は違うのも試してみたいな。 もう少しフィットするやつで、かつコストパフォーマンスが良いものを希望。

有給休暇: 花粉症をもらいにいったり Google Latitude で遊んだり

今年2回目の全休。

(計算が合っていれば)残38日(昨年分18日 + 今年分20日)。

メインの予定はお留守番。あわせて午前中に花粉症をもらいにいってきた。 それとモバイル Google マップGoogle Latitude にチェックイン機能がついたので、試しにいろいろ使ってみたり Google マップで使う Google アカウントGoogle Buzz 用に使っているアカウントに変えたりとか。

今日のさえずり: たくさんチェックインすると達人になれるのか!

2011年02月02日

[ 2月2日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィでマネージャー・プロダクトオーナーをしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

follow us in feedly

※内容は個人的見解であり所属組織とは関係ありません。

月別インデックス
Process Time: 0.046184s / load averages: 0.22, 0.25, 0.25
nDiki by WATANABE Yoshimasa (Naney, Google profile)
Powered by DiKicker