什么时候使用公共字段有意义?
2022-09-01 20:39:54
这是我一段时间以来一直有的问题:
什么时候公开一个领域是有意义的?
public class SomeClass()
{
public int backing;
}
这样做的缺点(除了激怒OOP精英之外)是,如果您需要在此数据之上添加任何逻辑,则必须对API进行重大更改。我想这就是精英主义者所讨论的。
Java 和 C# 中的最佳实践长期以来一直是使用 getters/setter 或属性来访问字段。
public class SomeClass()
{
private int backing;
public int getBacking()
{
return backing;
}
public void setBacking(int v)
{
backing = v;
}
}
C#已经将其演变为具有自动属性的非常简单的语法:
public class SomeClass()
{
public int Backing { get; set; }
}
懒惰的我仍然觉得这太长了,尽管这是我发现自己做了很多事情。更重要的是,我不确定我是否知道公共领域在哪里更有意义。
为什么不将公开声明的字段视为幕后的属性(或方法)呢?这样就不可能愤怒地解耦神灵,并且少打字一点。
public class SomeClass()
{
public int backing; // The same as public int backing { get; set; }
}
对于只包装基础字段的属性,我很确定JIT优化了方法调用,因此性能可能不是问题。有什么想法吗?(字段名称的正确大小写约定除外)
编辑:感谢您的所有回复。我觉得也许不是每个人都理解我的问题。什么时候公共领域比房产更好?为什么这是一个更好的选择?如果唯一的原因是方便(更少的键入和混乱),那么每当遇到公共字段时,让编译器生成一个“底层”属性的缺点是什么。基本上,不可能创建一个真正的公共字段(因为它们都是属性)。那会有什么问题呢?谢谢。