【发布时间】:2009-06-04 00:11:33
【问题描述】:
很容易忘记0、1 或5 等奇数。当我编写低级 C 代码时,我曾经对此非常严格。随着我更多地使用涉及 XML 和 SQL 的所有字符串文字,我发现自己经常打破在代码中嵌入常量的规则,至少在字符串文字方面是这样。 (我仍然擅长数字常量。)
字符串与数字不同。创建一个与其值同名的编译时常量(例如const string NameField = "Name";)感觉乏味且有点愚蠢,尽管在许多位置重复相同的字符串文字似乎有风险,但打字错误的可能性很小多亏了复制和粘贴,当我重构时,我通常会进行全局搜索,这不仅涉及更改事物的名称,还包括更改与周围事物相关的功能处理方式。
所以,假设您没有一个好的 XML 序列化程序(或者没有心情设置一个)。您个人会使用以下哪一项(如果您不想在某些代码审查中屈服于同行压力):
static void Main(string[] args)
{
// ...other code...
XmlNode node = ...;
Console.WriteLine(node["Name"].InnerText);
Console.WriteLine(node["Color"].InnerText);
Console.WriteLine(node["Taste"].InnerText);
// ...other code...
}
或:
class Fruit
{
private readonly XmlNode xml_node;
public Fruit(XmlNode xml_node)
{
this.xml_node = xml_node;
}
public string Name
{ get { return xml_node["Name"].InnerText; } }
public string Color
{ get { return xml_node["Color"].InnerText; } }
public string Taste
{ get { return xml_node["Taste"].InnerText; } }
}
static void Main(string[] args)
{
// ...other code...
XmlNode node = ...;
Fruit fruit_node = new Fruit(node);
Console.WriteLine(fruit_node.Name);
Console.WriteLine(fruit_node.Color);
Console.WriteLine(fruit_node.Taste);
// ...other code...
}
【问题讨论】:
-
0 不是奇数,是偶数 :-)