3

以下の 2 つのコード ブロックを比較します。

if (args.Length != 1)
{
    throw new ArgumentException();
}    
if (String.IsNullOrEmpty(args[0])
{
     throw new ArgumentNullException();
}
File f = new File(args[0]);
if (!f.Exists)
{
    throw new FileNotFoundException();
}
// Perform tasks on the file

この:

if (args.Length != 1)
{
    throw new ArgumentException();
}    
else if (String.IsNullOrEmpty(args[0])
{
    throw new ArgumentNullException();
}
else
{
    File f = new File(args[0]);
    if (!f.Exists)
    {
        throw new FileNotFoundException();
    }
    else
    {
        //Perform tasks on the file
    }
}

(パフォーマンス/読みやすさの点で)どちらが優れていますか? アプリケーションには操作対象のファイルが必要なため、コードで例外をキャッチすることはありません。

4

3 に答える 3

4

より良いというのは非常に主観的なものなので、どちらが優れているとは言えません。私言えることは、2 番目の例の else ブロックは必要ないということです。読みやすいと思うので、個人的にはそのコードを好みます。

于 2012-12-03T08:30:11.080 に答える
1

どちらを使用してもかまいません。2つ目は、例外をスローしないようにコードをリファクタリングする場合にも機能します(thenを挿入するのを忘れると奇妙な問題が発生しますelse:-))。最初のステートメントを使用してもパフォーマンスが向上することは期待できません。少なくとも、目立ったステートメントではありません。

ただし、スローされた例外に例外メッセージを渡すこともお勧めします。

于 2012-12-03T08:31:27.310 に答える
1

elseをスローするとプログラムが停止するため、 の理由はありませんexception。実際のコードに到達するまでにプログラムが終了していなければ、エラーは発生していないと考えて間違いありません。

コードから肥大化を安全に取り除くことができるので、読みやすくするために、else ブロックを省略します。

于 2012-12-03T08:30:02.943 に答える