c# - 在 .NET 中如何命名这些相关的属性、类、参数和字段?

标签 c# .net

我经常发现我想在 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 更改 engineEngine

您将如何重命名这四个项目?为什么?

(注意:我意识到这个例子中的属性可能是一个自动属性。我只是不想让这个例子过于复杂。)

另见: 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/

相关文章:

.net - .NET 中的套接字性能缓慢 - 有什么提示吗?

c# - WinForms ComboBox SelectedIndexChanged 在键入几个字符后跟 Alt+Down 时不触发

c# - 如何在 UWP 应用程序中生成二维码?

c# - Entity Framework : Server did not respond within the specified time out interval

c# - 欧文认证:async method lacks 'await' operators

c# - 使用 C# 将数据传入和传出 SQL 表

从另一个 AppDomain 访问时,c# 脚本有错误的数据

.net - 如何使用 log4net 登录 RichTextBox?

.NET Core 指定的框架 'Microsoft.NETCore.App' ,版本 '1.1.2' 未找到

.net - 如何编写内部可模拟方法