gpt4 book ai didi

c# - 防止不必要的字段访问的样式指南

转载 作者:行者123 更新时间:2023-11-30 12:16:14 28 4
gpt4 key购买 nike

我曾经在这里看到一个问题,关于是否可以在属性中嵌入字段,这样它们就不能在类的其余部分访问,例如

public string Name
{
private string _name;

get { return _name; }
set
{
_name = value;
// <Important stuff that would not be executed
// upon direct field access>
}
}

遗憾的是,这是不可能的,所以我想这可能有助于设置一个样式指南,即字段可能永远不会在属性之外访问。显然,人们不想公开公开每个字段,因此这些字段需要像这样的私有(private)属性:

private int _progress = 0;
private int progress
{
get { return _progress; }
set { _progress = value; }
}

如果这与字段需要有一个下划线作为前缀的指南配对,那么如果在类中的其他地方发现下划线,则可以立即判断出有问题。

所以我的问题 - 或者更确切地说,问题是:

这是个好主意吗?
对私有(private)属性使用驼峰命名法听起来合理吗?
谁能想到这可能会出现问题的场景?

最佳答案

如果 getter 和 setter 没有副作用,那么创建私有(private)属性来包装私有(private)字段就没有意义了。要么使用字段并完成它,要么使用自动属性。不要写六行代码来表达一行的意图;你只是让你的代码更难阅读。

现在,如果您的二传手确实有副作用,那就另当别论了。在这种情况下,最好有一个准则,即不应在属性外设置字段——但要考虑到构造函数可能也需要设置字段。 (最初设置对象的状态可能需要绕过副作用。)可能还有其他情况需要使用该字段(深层复制、加载/保存等),但这就是为什么“使用属性”应该成为指导方针,而不是硬性规定:在绕过该属性之前,您需要多加考虑。

至于命名约定,显然这取决于你,但我觉得拥有驼峰式属性很奇怪。在我见过的所有代码中,属性都是 PascalCased,即使它们是私有(private)的也是如此。

关于c# - 防止不必要的字段访问的样式指南,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5765095/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com