2012-04-06 53 views
0

任何人有任何想法來清理呢?這個C#代碼的味道..似乎應該有一個更清潔的方式來寫這個

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對此有點矯枉過正。 – Inisheer 2012-04-06 03:11:16

+1

我覺得我已經到了一個地步,如果我再也不會聽到「代碼味道」,那麼它不會太早。 (它實際上可以查看代碼並經驗性地評估給定算法的成本/收益,而不必嗅探並使用直覺) – 2012-04-06 03:14:58

+1

Linqsturbation:'return new [] {FirstName,LastName} .Where(s =>! string.IsNullOrEmpty(s))。加入(「」)' – siride 2012-04-06 03:15:45

回答

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

如果姓氏爲空,修剪將刪除尾隨空格 – TGH 2012-04-06 03:13:10

+0

@EdS。這不是修飾所做的。 – siride 2012-04-06 03:15:14

+0

聰明@TGH。謝謝! – 2012-04-06 03:17:31

1

首先,使用StringBuilder在這裏似乎不必要的,因爲你知道到底有多少級聯可(4)執行的,除非它已被證明是一個瓶頸,只會弄亂代碼。

您可以通過使用String.Format()來使它變得更加簡單。

1
public string FullName 
{ 
    get 
    { 
     return string.IsNullOrEmpty(FirstName) ? LastName 
      : string.IsNullOrEmpty(LastName) ? FirstName : FirstName + " " + LastName; 
    } 
} 
相關問題