在构造函数中将变量传递给属性时,是否有一种“正确”的方式来命名变量?示例(在 C# 中):
public class MyClass
{
private int index;
public MyClass(int i)
{
index = i;
}
}
当两个变量“相同”时,是否可以更简洁地命名一个,等等?我想至少保持一致,但我想知道是否有一种可接受的方式来做到这一点。
在构造函数中将变量传递给属性时,是否有一种“正确”的方式来命名变量?示例(在 C# 中):
public class MyClass
{
private int index;
public MyClass(int i)
{
index = i;
}
}
当两个变量“相同”时,是否可以更简洁地命名一个,等等?我想至少保持一致,但我想知道是否有一种可接受的方式来做到这一点。
public MyClass(int index)
{
this.index = index;
}
这至少是 Java 中常见的做法,我想在 C# 中也是如此。它使名称比 更有意义i
,并使用与属性相同的名称来指定相同的事物。
重构建议类的私有字段为驼峰式,并在它们前面加上 _ (_index
在您的情况下)。他们建议将参数设置为不带下划线的 camelCase。
如评论中所述,私有字段没有 MSDN 推荐的标准。
你可以使用你写的
或者
如果变量名称相同,下面可以是另一个选项
public class MyClass
{
private int index;
public MyClass(int index)
{
this.index = index;
}
}
您可以将它们命名为相同的名称。用它来澄清你在做什么。
this.index = index;
如果您进行区分(我不建议这样做),最好最明确地传递给方法的参数名称而不是您的内部名称。如果其他程序员使用您的类,那么至少他们知道参数的含义。因此,如果您想区分:
public MyClass(int index)
{
i = index;
}
我认为您应该专注于使“可见”变量更具可读性(在这种情况下,这是构造函数的参数)。毕竟,这是您班级的用户在输入时会看到的内容。
是的,有一个避免这种困境的正确方法,即遵循为您的语言建立的命名约定。例如,在 C# 中,私有字段以下划线开头是一种约定。可能有一些相当于Java的东西。
话虽如此,通过显式使用引用字段来区分字段和局部变量是绝对可能的this
(当存在命名歧义时这种做法是合适的)。
C# 标准会这样编写您的代码:
public class MyClass {
public MyClass(int index) {
Index = index;
}
public int Index {
get { return _index; }
private set { _idex = value; /* Perform other actions triggered by the set */ }
}
private int _index;
}
在不需要支持字段的情况下,属性(和支持字段)可以并且应该简化为:
public Index { get; private set; }