我经常发现我想在 C# 中编写类似这样的代码,但我对标识符名称感到不舒服:
public class Car
{
private Engine engine;
public Engine Engine
{
get
{
return engine;
}
set
{
engine = value;
}
}
public Car(Engine engine)
{
this.engine = engine;
}
}
这里我们有四种不同的东西叫做“引擎”:
Engine
类。引擎似乎是一个很好、自然的名字。Engine
公共(public)属性。将其称为 MyEngine 或 TheCarsEngine 似乎很愚蠢。engine
支持属性的私有(private)字段。一些命名方案会推荐m_engine
或_engine
,但其他人则表示应避免所有前缀。engine
构造函数上的参数名称。我见过建议在所有参数前加下划线前缀的命名方案,例如_engine
。我真的不喜欢这个,因为调用者可以通过 Intellisense 看到参数。
我不喜欢编写的代码的特别之处在于:
- 如果您在构造函数中更改参数名称但在构造函数主体中遗漏了它的使用,则会出现编译器可能无法发现的细微错误。
- Intellisense 有一个坏习惯,它会自动为您完成错误的事情,有时您不会注意到它改变了大小写。如果构造函数主体不小心以
this.engine = Engine;
结束,您将再次遇到一个微妙的错误
似乎每个名字单独使用都很合适,但放在一起就不好了。有些东西必须屈服,但是什么?我更喜欢更改私有(private)字段,因为它对用户不可见,所以我通常会以 m_engine
结尾,它解决了一些问题,但引入了前缀并且不会阻止 Intellisense 更改 engine
到 Engine
。
您将如何重命名这四个项目?为什么?
(注意:我意识到这个例子中的属性可能是一个自动属性。我只是不想让这个例子过于复杂。)
另见: Am I immoral for using a variable name that differs from its type only by case?
最佳答案
在这种情况下,我会完全按照示例中的名称命名它们。
这是因为命名清楚地表明了每个元素包含和/或将用于什么数据。
对于 C#3,我唯一要改变的是使用一个自动属性,它会删除局部变量。
关于c# - 在 .NET 中如何命名这些相关的属性、类、参数和字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/461865/