- - PR -
JAVA言語の作法について
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-09-21 16:29
こんにちは。
例外補足時に行える処理がないならば、catchは必要ないかと。 ↓catchを省略してこの形で try { 処理 } finally { 後処理 } 冗長なcatchは潜在的なバグの要因となりえますので、(throwの記述漏れなど) なるべく書かない方が無難かと思います。 (この辺は好みが分かれる部分なのでしょうか?) それとthorwsの定義は throws IOException,FileNotFoundException となっていた方が使用する側から見ると分かりやすいですね。 クラスの使用者がFileNotFoundExceptionをcatchした時に復帰処理を行える可能性 がありますので、明示的に記載されていた方がありがたいです。 | ||||||||
|
投稿日時: 2005-09-21 16:37
こんにちは、じゃんぬ です。
CodeComplete では空の catch 句は CODING HORROR となってました。 理由は masa さんが提示してくださった通りです。 どうしてもという場合でも、せめてエラー出力だけはしてスルーでしょう。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2005-09-21 16:48
編集したのは別部分です。 write(String) でその都度エンコードされていませんか? 何行あるか未知のものを毎回エンコード処理させるほうがキツイ気がしたので・・ nullは普通に if (reader != null) reader.close(); だけでよいのでは? close()があるものにわざわざ reader = null; とは、しない気がします。 また reader == null のときは他の判別ではともかく close()するかしないかのチェックでは 何もしないままで問題ないでしょう。 | ||||||||
|
投稿日時: 2005-09-21 18:13
unibon です。こんにちわ。
このコードだと BufferedWriter の中でエラー(ディスクフルなど)が起きたときに、関連付いているファイルリソースを close できないときがあります。BufferedWriter の close のソースコードを見ると、close する前に flushBuffer しているためです。flushBuffer の中で例外が発生すると close しないままになってしまうはずです。 このような異常時には BufferedWriter を close するのではなく、FileWriter を close すべきだろうと思います。 なお、Reader のほうは大丈夫なのかもしれませんが、対称性を考えると Writer と合わせておくほうが無難かもしれません。 #以下、あとで追加。 ガーベッジコレクションが動けば、ファイルリソースは解放されるでしょうが、それまでの数秒〜数十秒間は解放されないままになります。 [ メッセージ編集済み 編集者: unibon 編集日時 2005-09-21 18:14 ] | ||||||||
|
投稿日時: 2005-09-21 19:04
文法を知ってコンパイルできて動けばOKというのではなく、その言語独特の
作法や流儀を勉強しようとする姿勢はすばらしいですね。 ところで、BufferedReaderの行取得ロジックは while (reader.ready()) { String s = reader.readLine(); //以下略 } のほうがスマートだと思うのですが、これって何かまずいんでしたっけ? | ||||||||
|
投稿日時: 2005-09-21 20:09
Reader.ready() は、ストリームに 1バイトでもデータがあれば true を返します。つまり、ready() を確認することによってブロックしないことが保証できるのは read() くらい。readLine() は、改行までを読み取る必要があるので ready() が true を返してもブロックする可能性があります。 つまり、readLine() の前に ready() を確認するのは、あまり意味がありません。 | ||||||||
|
投稿日時: 2005-09-21 23:03
こんばんは。
CodeComplete という本の存在は初めて知ったのですが、ネット上の評判を見る限り かなりの名著のようですね。出版された時期は少々昔のようですが、今読んでみても 時代遅れではない内容でしょうか? 購入してみようかなぁと考えていますので、教えて頂ければ嬉しいです。 脱線してすいません | ||||||||
|
投稿日時: 2005-09-22 02:01
2005/3/28に第2版が出版されてて、@IT BOOK Preview: Code Complete 第2版で一部分だけ読めます。
|