这是一个相当琐碎的问题,但是我想听到人民意见。

如果我有一个字典,我访问过的特性,这些格式,你会喜欢的酒店?

/// <summary>
/// This class's FirstProperty property
/// </summary>
[DefaultValue("myValue")]
public string FirstProperty {
    get {
        return Dictionary["myKey"];
    }
    set {
        Dictionary["myKey"] = value;
    }

这可能是典型的方式这样做。这是相当有效,容易理解,等等。唯一的缺点是用一个更长或更复杂的关键,它将有可能拼错或更改的一个实例或东西,导致我到这一点:

/// <summary>
/// This class's SecondProperty property
/// </summary>
[DefaultValue("myValue")]
private const string DICT_MYKEY = "myKey"
public string SecondProperty {
    get {
        return Dictionary[DICT_MYKEY];
    }
    set {
        Dictionary[DICT_MYKEY] = value;
    }

这是略为更加复杂,但似乎提供了额外的安全,而是更接近我会想如"代码的完成"的解决方案。缺点是,当你还有一个///块和一个[默认值()]块上述财产已经开始变得有点拥挤。

所以你更喜欢和为什么?没有任何人有任何更好想法吗?

有帮助吗?

解决方案

我喜欢第二个纯粹因为任何避免的神奇的字符串/号码是一件好事。海事组织如果你需要的参考数字或字符串中的代码多次,它应该是一个恒定不变。在大多数情况下,即使是仅使用一次它应该是在一个不断

其他提示

我同意@格为一个纯粹是挑剔的观点。答案是什么你的作品。所有这些代码发生在10线(如果包括的省略上的卷曲的支撑).没有人会丢失机会的输入错误是很苗条(不是不可能的但非常渺茫).另一方面,如果使用的关键在其他地方,然后肯定去不变。

就个人而言,我会去你关于你的花括号的风格。:)只是在开玩笑!这真的是一个论的风格。

这不是回答你的问题,但我不认为"默认值"意味着什么,你认为它的意思。它并不设定缺省值,你的财产。

看看 MSDN这个问题 更多的细节。

很多人可能会争辩说,第二种选择是"正确"的,因为任何值多次使用,应重构成不变的。我最有可能利用第一项选择。你已经得到接近"代码的完成"的解决方案,通过封装字典进入一个强大的类型的财产。这样可以降低搞砸了检索错误的字典中的条目您的执行情况。只有2个地方在这里你可能会搞砸了输入"myKey",在吸气和器,这会很容易找到。

第二个选择会得到太乱。

当你只用一个神奇的字符串在一个上下文中,像你一样,我认为这是正常的。
但如果你需要使用的关键在另一个部的类,去 const.

你能相匹配的酒店名字的钥匙,并使用反映获得的名称查找。

public string FirstProperty {
get {
    return Dictionary[PropertyName()];
}
set {
    Dictionary[PropertyName()] = value;
}

private string PropertyName()
{
    return new StackFrame(1).GetMethod().Name.Substring(4);
}

这具有增加的好处,使所有的财产执行情况相同,所以你可以为他们在visual studio作为代码段,如果你想要的。

@乔尔,你不要指望StackFrame. 在衬 可以毁掉你的一天你最不希望的。

但是这个问题:无论哪种方式并不真正的问题很多。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top