Ich weiß, dass dies schon einmal gefragt wurde, aber ich habe die Antwort nicht vollständig verstanden, noch fühlte ich, dass die Frage genau die gleiche war wie diese.Clean Code Buch von Robert Cecil Martin
Im Buch Clean Code Buch von Robert Cecil Martin, schlägt er im Hinblick auf Methoden sollten Sie ...
- Bevorzugen keine Parameter
- passieren Wenn Sie paramters dann passieren nur einen passieren muss .
- Ein einziger Pass mehr als dies in seltenen Fällen.
Das hat mich verwirrt ...
auf diese So basiert das richtig?
diese Klasse ...
class FourNumberAdder
{
public int Num1 { get; }
public int Num2 { get; }
public int Num3 { get; }
public int Num4 { get; }
public FourNumberAdder(int n1, int n2,int n3,int n4)
{
this.Num1 = n1;
this.Num2 = n2;
this.Num3 = n3;
this.Num4 = n4;
}
}
mit diesem ...
FourNumberAdder FNA = new FourNumberAdder(1,2,3,4);
Oder Diese Klasse ...
class FourNumberAdder
{
public int Num1 { get; set; }
public int Num2 { get; set; }
public int Num3 { get; set; }
public int Num4 { get; set; }
}
mit diesem ...
public void go()
{
FourNumberAdder FNA = new FourNumberAdder();
FNA.Num1 = 1;
FNA.Num2 = 2;
FNA.Num3 = 3;
FNA.Num4 = 4;
}
oder diese 2 Klassen ...
class FourNumberAdder
{
public int Num1 { get; set; }
public int Num2 { get; set; }
public int Num3 { get; set; }
public int Num4 { get; set; }
public FourNumberAdder (FourNumbers fn)
{
this.Num1 = fn.Num1;
this.Num2 = fn.Num2;
this.Num3 = fn.Num3;
this.Num4 = fn.Num4;
}
}
class FourNumbers
{
public int Num1 { get; set; }
public int Num2 { get; set; }
public int Num3 { get; set; }
public int Num4 { get; set; }
}
mit diesem ...
FourNumbers fn = new FourNumbers();
fn.Num1 = 1;
fn.Num2 = 2;
fn.Num3 = 3;
fn.Num4 = 4;
FourNumberAdder FNA = new FourNumberAdder(fn);
oder etwas anderes? Bitte beachten Sie, ich dachte, die letzte Option wäre richtig, da es die 4 Parameter in eine neue Klasse "bündelt", aber dann haben Sie das gleiche Problem mit dieser Klasse, da Sie entweder alle Parameter einzeln übergeben oder zugreifen müssen sie direkt über dort Eigenschaften.
Hoffe, das ist klar.
Ich persönlich mache eine Ausnahme von dieser Regel für Konstruktorparameter, die nicht in separate Kategorien aufgeteilt werden können (wenn sie subkategorisiert werden könnten, könnten die ctor-Parameter in separate Klassen geschrieben und als weniger Parameter übergeben werden). –
Diese Frage eignet sich jedoch nicht für diese Website, da die Antworten wahrscheinlich subjektiv/meinungsbezogen sind. –