【发布时间】:2020-02-28 09:18:35
【问题描述】:
最近我一直在阅读一些关于在 C# 中始终使用属性而不是公共字段的主题,但是私有属性呢?当然,也有一些关于它的线程,但他们几乎总是谈论额外的逻辑/延迟加载等。
假设我有一个只读字段,它将在 Program 类周围被访问,但是(至少现在)它没有在其他任何地方使用:
static class Program
{
private static readonly Canvas canvas = new Canvas(100, 30);
// Canvas is like the main class of my game, there can be only one instance of it
static void Main()
{
// ...
canvas.DoSomething();
// ...
}
// ...
// Many other references to "canvas" here
}
或者我应该这样做:
private static Canvas Canvas { get; } = new Canvas(100, 30);
第二个选项意味着我可以轻松地将其公开,我将来可能会也可能不会这样做。那么其他私有领域呢?关于什么应该是私有财产,是否有任何规则或指导方针?或者我应该将所有内容都声明为一个字段,因为它是私有的(尽管感觉是公共的)?
只是为了澄清:
- 我不是在做一个可重用的库,只是一个主机游戏;
- 我不会实现任何关于获取/设置值的逻辑;
- 我正在自己编写 Canvas 类,它不是外部的。
【问题讨论】:
-
这更像是一个软件工程问题,而不是 StackOverflow 的问题,请参阅 softwareengineering.stackexchange.com/questions/160876/…。话虽如此,正如 Eric Lippert here 所说,私有属性(使用 setter)的一个非常明显的优势是,当您想知道谁设置值以及何时设置值时,您可以更好地调试它们。
标签: c# properties private encapsulation