10

私は一般診療をよりよく理解しようとしています...具体的にはコンストラクターでthis()を導出します。コードが少ないことは理解していますが、読みにくいと思います。このようにすることは一般的/良い習慣ですか?それとも、それを具体的に処理する2番目のコンストラクターを作成する方がよいでしょうか。

public SomeOtherStuff(string rabble) : this(rabble, "bloop") { }

また

Public SomeOtherStuff(string rabble)
{
    //set bloop
}

任意の入力をいただければ幸いです

4

7 に答える 7

17

this()可能な限り使用することをお勧めします。そうしないと、コードを複製することになり、DRY (Don't Repeat Yourself) の原則に違反します。同じことを繰り返すことの問題点は、変更が必要になるたびに (コードの 1 行の単純な変更であっても)、複数の場所で同じ変更を行い、複数のコピーを同期させておく必要があることです

必要な場合にのみコードを「複製」する必要があります。これは、異なる必要があるためです。したがって、もはや複製ではありません。このように、重複があることは、コードが実際には異なるという読者へのメッセージであり、それには理由があります。

于 2010-08-19T17:40:38.107 に答える
7

2 つの別個のコンストラクターの問題は、同じコードが含まれていることが多く、一方のコンストラクターが変更され、もう一方のコンストラクターが変更されていない場合、後のリファクタリングで問題が発生する可能性があることです。したがって、 DRY 原則の適用として、 this() を使用したコンストラクターの連鎖を見ることができます。

于 2010-08-19T17:41:05.737 に答える
2

初期化リストは、業界では非常に一般的な方法です。

読みやすさに関しては...それは意見の問題です。しかし、保守性は通常、より高い目標に向けて努力するものです。

DRYは良いことです:)

于 2010-08-19T17:41:27.467 に答える
1

それがコンストラクターをチェーンする方法であり、それは完全に有効なことです。

于 2010-08-19T17:39:09.830 に答える
1

私は最初の方法(コンストラクターチェーン)が本当に好きですが、2番目の方法の方が読みやすいと感じた場合は、コンストラクターにある重複コードをプライベートメソッドに入れて、人々が言及したDRY原則を破らないようにすることができます.

また、私は常に自分が取り組んでいるコードのスタイルでコーディングしようとしています。そのため、支配的なスタイルがいずれかである場合は、一貫性を保つためにそのスタイルを使用します。

于 2010-08-19T18:38:31.780 に答える
0

私は読みやすさよりも信頼性を重視しています。

コンストラクターの連鎖は、コンストラクターのメソッド本体をコピーペーストするよりもはるかに優れています。

于 2010-08-19T17:39:08.937 に答える
0

DRY のもう 1 つの方法は、初期化メソッドを記述することです。たとえばInit(rabble, bloop)、すべてのコンストラクターがこのメソッドを呼び出します。

これは、特に多くのコンストラクターがある場合に、混乱が少なく、より柔軟になる傾向があります。

于 2010-08-20T02:08:19.510 に答える