public string Format { get { return string.Format("{0}{1}v{1}", LastManStanding ? "FFA " : string.Empty, m_Teams.PlayersPerTeam); } }
我应该使用StringBuilder
吗?
我不确定有条件地格式化这样的字符串是错误的,而不是做
public string Format
{
get
{
StringBuilder sb = new StringBuilder();
if(LastManStanding)
sb.Append("FFA ");
sb.Append(string.Format("{0}v{0}", m_Teams.PlayersPerTeam);
return sb.ToString();
}
}
答案 0 :(得分:5)
对于这样的小字符串,你正在做的事情很好。
在处理数千个连接和/或字符串格式时使用StringBuilder
。
旁注:
而不是:
sb.Append(string.Format("{0}v{0}", m_Teams.PlayersPerTeam));
你可以这样做:
sb.AppendFormat("{0}v{0}", m_Teams.PlayersPerTeam);
答案 1 :(得分:1)
错了,没有。可读? MEH
一点格式化可以有很长的路要走
public string Format
{
get
{
return string.Format("{0}{1}v{1}",
LastManStanding ? "FFA " : string.Empty,
m_Teams.PlayersPerTeam);
}
}
答案 2 :(得分:0)
在我看来,第一个版本是首选,它清楚地表达了你的意图,它更简洁易读,然后是第二个,冗长的版本。我会像这样格式化它:
public string Format
{
get
{
return string.Format("{0}{1}v{1}", LastManStanding ? "FFA " : string.Empty,
m_Teams.PlayersPerTeam);
}
}
答案 3 :(得分:0)
如果您正在对长字符串进行编辑,则首选StringBuilder,在这种情况下您不需要它。
答案 4 :(得分:0)
同意所有人 - 对于这么小的字符串,没关系。请注意,使用StringBuilder重写更糟,因为您使用String.Format而不是StringBuilder.AppendFormat。
在你的情况下使用单格式字符串来创建结果字符串是有益的,如果你决定开始在其他语言中本地化你的程序 - 可以从资源中拉出格式化,但很难用StringBuilder创建代码尊重所有可能的语言。
实际上,故事的另一面可能没有使用StringBuilder或String.Format。有些人/团队不愿意使用? :
运营商。知道为什么建议你重写一段代码将有助于重写目标。
答案 5 :(得分:0)
我将FFA和普通游戏的格式化逻辑分开:
public string Format
{
get
{
if(LastManStanding)
return string.Format("FFA {0}v{0}", m_Teams.PlayersPerTeam);
else
return string.Format("{0}v{0}", m_Teams.PlayersPerTeam);
}
}
阅读起来容易得多。从逻辑上讲,格式字符串也是分开的。很可能你会单独更改它们,我很惊讶你没有。 “FFA 2v2”对我来说没什么意义。