在我几乎所有的课程中,我混合了属性和内部类变量。我总是根据规则“如果您在外部需要它,则选择属性,如果不需要,则使用类变量”来选择一个或另一个。但还有许多其他问题让我经常重新思考这一点,例如:
在某些时候,我想使用类外部的内部变量,所以我必须将它重构为一个属性,这让我想知道为什么我不只是将所有内部变量都设为属性,以防万一我不得不从外部访问它们,因为大多数类都是内部类,所以它不会暴露在 API 上,所以内部变量是否可以从类外部访问并不重要
但是由于 C# 不允许您
List<string>
在定义中实例化例如属性,因此必须在每个可能的构造函数中初始化这些属性,所以这些变量我宁愿有内部变量,只是为了让事情更清晰,因为它们都被初始化了一个地方如果构造函数/方法参数是骆驼大小写,C# 代码会更清晰地读取,并且您将它们分配给帕斯卡大小写属性,而不是看到歧义
templateIdCode
并且必须四处查看它是否是局部变量、方法参数或内部类变量,例如它当您看到TemplateIdCode = templateIdCode
这是分配给类属性的参数时,会更容易。这将是始终仅在内部类上使用属性的论据。
例如:
public class TextFile
{
private string templateIdCode;
private string absoluteTemplatePathAndFileName;
private string absoluteOutputDirectory;
private List<string> listItems = new List<string>();
public string Content { get; set; }
public List<string> ReportItems { get; set; }
public TextFile(string templateIdCode)
{
this.templateIdCode = templateIdCode;
ReportItems = new List<string>();
Initialize();
}
...
在创建内部(非 API)类时,您有什么策略来决定是否应该创建内部类变量或属性?