1

このようなことをする必要がある場合:

var connection = new Connection(host);
connection.Execute(Commands.Delete);

これを行うのに何か問題がありますか:

(new Connection(host)).Execute(Commands.Delete);

最初の例の方が読みやすいかもしれませんが、これを複数回行う必要がある場合は、2 番目の例の方がうまく機能します。

(new Connection(anotherHost)).Execute(Commands.Create);
(new Connection(someOtherHost)).Execute(Commands.Update);
(new Connection(host)).Execute(Commands.Delete);
4

4 に答える 4

3

あなたのConnectionクラスは実装していますIDisposableか?それで:

using (var connection = new Connection(host))
{
    connection.Execute(Commands.Delete);
}
于 2010-07-30T04:42:25.877 に答える
1

まず、私は Java の人であり、C# を使用したことはありませんが、コードに基づいて、Java との類似性を知っていることから、私が言えることは -

Connection クラスが状態情報を保持している場合、毎回新しいオブジェクトを作成する意味があります。ただし、ステートレスの場合、複数のオブジェクトを作成するのはかなり非効率的です。作成して同じものを再利用できます。

つまり、一度作成した接続に「ホスト」を設定できない場合は、言及した両方のアプローチに違いはありません。

于 2010-07-30T04:39:07.857 に答える
1

冗長になるほど、デバッグが容易になります。

コードの可読性への影響は、どれだけ 1 行にまとめようとしているかに大きく依存します。表現するのに多くの異なる単語が必要な 1 つのアイデアがある場合、それを 1 行にまとめることは大きな問題ではありません。私の意見で対処します。しかし、複数のアイデアを 1 行に詰め込もうとすると、明確さが失われます。

例えば。表現するのにいくらかのスペースが必要な単純なアイデアから始めます。

transactionTime = generationTime + retrievalTime + processingTime + loggingTime

そしてここには、たまたま 1 行で表現する、より複雑なアイデアがあります。

logTransactionData(processTransaction(retrieveTransaction(generateTransactionQuery())))

文字の長さはほぼ同じですが、最初の例の方が 2 番目の例よりも一目で理解しやすいと思います。

したがって、一般的には、ラインをデバッグする必要がある可能性と、アイデアの複雑さとラインの比率を考慮してください。

于 2010-07-30T04:53:19.327 に答える
0

はい、あなたは新しいオブジェクトを初期化し、それを使用し、それを失います! 再利用することはできず、GC が収集するまで、どこかに存在します。したがって、新しく初期化されたオブジェクトを変数に格納しても害はなく、それらを別の行で宣言すると、コードが読みやすくなります。

于 2010-07-30T04:40:58.050 に答える