在我的几乎所有类中,我都有一个属性和内部类变量混合的。我总是选择一个或另一个规则“属性(如果您需要它),类变量(如果不是)”。但还有许多其他问题使我经常反思这一点,例如:
List<string>
属性,然后,这些属性必须在每个可能的构造函数中被初始化,所以这些变量--我宁愿有内部变量--只是为了保持事物的清洁,因为如果构造函数/方法参数是camel情况,并且您将它们分配给pascal case属性,并且您将它们分配给pascal case属性,而不是查看templateIdCode
和必须四处查看它是否是局部变量、方法参数或内部类变量,那么这些变量在一个地方(TemplateIdCode = templateIdCode
时,更容易看到这个参数被分配给类属性。这将是始终仅在内部classes.上使用属性的的参数。
例如:
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)类时,您在决定应该创建内部类变量还是属性时有哪些策略?
发布于 2010-05-23 02:22:27
如果我在以后发现需要公共访问的私有变量,我只创建一个属性,将其作为私有成员使用,例如:
private List<string> listItems = new List<string>();
Public List<string> ListItems
{
get{return listItems;}
set{listItems = value;}
}
这允许您创建对数据的公共访问,而不必重构任何代码。它还允许您在私有成员中初始化数据,而不必在构造函数中进行初始化。
另一个优点是,您想要对任何访问公共属性的人执行的数据的任何修改都可以在属性的getter中完成。尽管VS2008引入了自动属性作为一种特性,但我仍然更喜欢属性的VS2005风格。
https://stackoverflow.com/questions/2891309
复制