我曾经在这里看到一个问题,是否有可能在属性中嵌入字段,因此无法在类的其余部分访问它们,例如。
public string Name
{
private string _name;
get { return _name; }
set
{
_name = value;
// <Important stuff that would not be executed
// upon direct field access>
}
}
可悲的是,这是不可能的,所以我想也许有助于设置一个样式指南,字段可能永远不会在属性之外访问。显然,人们不希望公开公开每个字段,因此这些字段需要私有属性,如下所示:
private int _progress = 0;
private int progress
{
get { return _progress; }
set { _progress = value; }
}
如果这与一个指南配对,那么字段需要有一个下划线作为前缀,如果在类的其他地方发现下划线,则可以立即告诉出错。
所以我的问题 - 或者更确切地说是问题:
这是个好主意吗? 对私有财产使用骆驼案是否合理? 任何人都可以想到这可能会产生问题吗?
答案 0 :(得分:3)
如果getter和setter没有副作用,那么使私有属性包装私有字段没有意义。使用字段并使用它,或使用自动属性。不要写六行代码来表达一行的意图;你只是让你的代码更难阅读。
现在,如果您的二传手确实有副作用,那么这是另一回事。在这种情况下,可以有一个指南,你不应该在属性外设置字段 - 但考虑到构造函数可能也需要设置字段。 (最初设置对象的状态可能需要您绕过副作用。)可能还有其他情况需要使用该字段(深层复制,加载/保存等),但这就是为什么“使用属性”应该是一个指导方针,而不是一个严格的规则:你想在绕过房产之前给它一些额外的想法。
就命名惯例而言,显然取决于你,但对于我来说,拥有一个camelCased属性看起来很奇怪。在我看过的所有代码中,属性都是PascalCased,即使它们是私有的。