我有以下课程
public static class Translation
{
public enum LanguageCultureName
{
enGB,
zhCN
};
public static string Get(LanguageCultureName languageCultureName, string sValue)
{
if (languageCultureName == LanguageCultureName.enGB)
{
return sValue;
}
else
{
//get translated string
return ....
}
}
}
基本上我想把这个方法称为
最好在方法调用周围添加一个内联If语句,如;
LanguageCultureName languageCultureName = LanguageCultureName.zhCN;
string sTranslation = languageCultureName == LanguageCultureName.enGB ? "My String to translate" : Translation.Get(languageCultureName, "My String to translate");
,或者只是调用它,如果它是enGB,则返回传递的字符串,如
LanguageCultureName languageCultureName = LanguageCultureName.zhCN;
string sTranslation = Translation.Get(languageCultureName, "My String to translate");
是否有任何表现原因,或个人偏好?
答案 0 :(得分:2)
这是应该在Get
方法内部进行的抽象,而不是内联。
LanguageCultureName languageCultureName = LanguageCultureName.zhCN;
string sTranslation = Translation.Get(languageCultureName, "My String");
我还应该注意,将enGB字符串硬编码不是一个好习惯。您应该将两者 enGB和zhCN字符串移动到外部资源文件(例如.resx)。
答案 1 :(得分:0)
我会选择第二个。性能影响非常小,但更具可读性。
我理解你的代码的方式是你要检查文化是否已经是英文,如果不是翻译,则返回标准字符串。为了使性能产生影响,您必须在帐户
中采取一些方面这些评论中的每一个都会影响您的最终设计。你好像想要完全删除英文if
并将其替换为三元语句,即:删除if
并在错误的位置添加if
。
考虑到所有这些:如果你的验证是否是英语文化是你方法中的第一个陈述,那么它之间永远不会有明显的区别,并将它置于三元语句之外。
我们不要忘记十个指令中的一个:
我们应该忘记小的效率,大约97%的时间说:过早的优化是所有邪恶的根源。