2016-08-07 42 views
2

Ich habe eine Employee Klasse:Ist eine Eigenschaft "FullName" schlecht, wenn "FirstName" und "LastName" vorhanden sind?

class Employee 
{ 
    string FirstName { get; set; } 
    string LastName { get; set; } 
} 

Manchmal möchte ich den vollständigen Namen bekommen und es ist mühsam emp.FirstName + emp.LastName wieder und wieder und wieder zu schreiben.

Ist es eine schlechte Praxis, eine FullName Eigenschaft hinzuzufügen (weil es die gleichen Daten zweimal oder so ist)?

class Employee 
{ 
    string FirstName { get; set; } 
    string LastName { get; set; } 
    string FullName 
    { 
     get 
     { 
      return string.Format("{0} {1}", FirstName, LastName); 
     } 
    } 
} 
+3

Ich glaube nicht. Wenn Sie Property verwenden, ist das einfacher aufzurufen, anstatt es immer und immer wieder zu concattieren. Was "leicht" und "klar" ist, ist immer gut. –

+0

Was ist das Argument dafür, dass es eine schlechte Praxis ist? – Veverke

+0

Sie sind vollkommen in Ordnung, um voranzukommen – jonju

Antwort

6

Es ist nicht die gleichen Daten zweimal, Sie reduzieren tatsächlich auf wiederholten Code, indem Sie dies hinzufügen.

Es wäre schlecht, wenn FullName nicht berechnet wurde und neben FirstName/LastName gepflegt werden musste (synchron gehalten, gesetzt usw.).

1

Anstatt FullName Eigenschaft, bieten ToString() Methode, die genau das zurückgeben kann, was Sie möchten.

public override string ToString() 
{ 
    return string.Format("{0} {1}", FirstName, LastName); 
} 

einen Blick auf MSDN-Dokumentation Nehmen: How to: Override the ToString Method (C# Programming Guide)

Verbrauch:

Employee emp = new Employee(); 
emp.FirstName = "Maciej"; 
emp.LastName = "Los"; 
Console.WriteLine("Employee: {0}", emp.ToString()); 
//returns: "Employee: Maciej Los" 
+0

Ich denke nicht, 'ToString' zu überschreiben ist die beste Lösung, aber würde die' Fullname' Eigenschaft aus Gründen der Klarheit bevorzugen. Außerdem könnten Sie zusätzliche Eigenschaften haben, die möglicherweise mit 'ToString', aber nicht mit' Fullname' berücksichtigt werden müssen. – derpirscher

1

Im Gegenteil, dies ist der richtige Weg, es zu tun. Stellen Sie sich vor, Sie müssen einen Titel zwischen Vorname und Nachname hinzufügen (aber nur, wenn einer vergeben wurde). Wenn Sie eine schreibgeschützte Eigenschaft wie Ihren FullName überall verwenden, müssen Sie nur eine Änderung vornehmen. Wenn Sie die zwei separaten Eigenschaften verwenden, müssen Sie überall hingehen und die Änderung vornehmen (wenn und was Sie brauchen, um das Ergebnis richtig formatiert zu bekommen)