2012-04-06 7 views
0

Wer hat irgendwelche Ideen, dies zu bereinigen?Dieser C# Code riecht ... scheint so, als sollte es eine sauberere Möglichkeit geben, dies zu schreiben

public string FullName 
    { 
     get 
     { 
      var fullName = new StringBuilder(); 
      if (FirstName.Length > 0) 
       fullName.Append(FirstName); 
      if (LastName.Length > 0) 
      { 
       if (fullName.Length > 0) 
        fullName.Append(" " + LastName); 
       else 
        fullName.Append(LastName); 
      } 
      return fullName.ToString(); 
     } 
    } 
+2

StringBuilder ist ein bisschen Overkill dafür. – Inisheer

+1

Ich fühle mich, als ob ich an den Punkt komme, an dem, wenn ich nie wieder "Code-Geruch" höre, es kein Moment zu früh ist. (Es ist tatsächlich möglich, Code zu betrachten und empirisch das Kosten/Nutzen eines bestimmten Algorithmus zu bewerten, ohne herumschnüffeln zu müssen und seine Intuition zu verwenden) –

+1

Linqsturbation: 'return new [] {Vorname, Nachname} .Where (s =>! string.IsNullOrEmpty (s)) Join ("") ' – siride

Antwort

9
FullName = string.format("{0} {1}",FirstName,LastName).Trim() 
+0

Die Trimmung entfernt Leerzeichen, wenn der Nachname leer ist – TGH

+0

@EdS. Das ist nicht was die Trimmung tut. – siride

+0

Clever @ TGH. Vielen Dank! –

1

Zunächst einmal, indem ein StringBuilder hier scheint nicht notwendig, da Sie genau wissen, wie viele Verkettungen ausgeführt werden können (4) und, es sei denn, es ist ein Engpass erwiesen wurde, nur den Code Krempel dient .

Sie könnten es viel einfacher machen, indem Sie stattdessen String.Format() verwenden.

1
public string FullName 
{ 
    get 
    { 
     return string.IsNullOrEmpty(FirstName) ? LastName 
      : string.IsNullOrEmpty(LastName) ? FirstName : FirstName + " " + LastName; 
    } 
} 
Verwandte Themen