C# 字段命名指南?

2024-03-29

我将自己编写一些 C# 代码,但我想确保遵循最广泛接受的命名约定,以防我想引入其他开发人员、发布我的代码或出售我的代码。现在我遵循微软设定的命名约定,因为它们似乎是最广泛接受的。他们没有提到的一件事是私有字段的命名。在大多数情况下,我看到它们以驼峰命名法命名,就像受保护的字段一样,但这给我带来了一个问题,因为参数名称应该以驼峰命名法命名。以下面的构造函数为例:

public GameItem(string baseName, string prefixName, string suffixName)
{
    //initialize code
}

现在,如果我也对私有字段使用驼峰命名法,则会出现命名冲突,除非我使用“this”来访问类字段(我认为这违反了大多数标准,更不用说意味着更多的打字)。一种解决方案是为参数提供不同的名称,但为相同的数据提供 2 个不同的名称在逻辑上没有意义。据我所知,C++ 编码中常见的唯一其他解决方案是在开头给私有成员一个下划线 (_camelCase)。该解决方案是否被 C# 编码普遍接受?这个问题还有其他解决方案吗(比如仅使用属性(使用 PascalCase)来访问字段,即使在类本身中也是如此)?


_camelCase从我所见, for 字段很常见(这是我们在我们的地方使用的,微软更喜欢 .NET 运行时 https://github.com/dotnet/runtime/blob/b186c975c02a5ce0b45d86fb99063db127979894/.editorconfig#L71).

我个人使用这个标准的理由是它更容易输入_识别一个私有字段this.

例如:

void Foo(String a, String b)
{
    _a = a;
    _b = b;
}

Versus

void Foo(String a, String b)
{
    this.a = a;
    this.b = b;
}

我发现第一个更容易输入,它可以防止我意外分配给名为a代替this.a。 这一点得到了加强代码分析 http://msdn.microsoft.com/en-us/library/dd264939.aspx可维护性规则规定:

  • CA1500 http://msdn.microsoft.com/en-us/library/ms182216.aspx变量名称不应与字段名称匹配。

我的另一个原因是this.如果它不与局部变量或参数名称冲突,则它是可选的(Visual Studio / Code 会提示您删除它们),从而更难了解您正在使用哪个变量。如果你有一个_在所有私有字段的开头,那么您总是知道哪个是字段,哪个具有本地范围。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 字段命名指南? 的相关文章

  • 如何将这段 javascript 代码重写为 C++11?

    这是我在 Javascript Definitive Guide 中看到的 javascript 闭包代码 我想把它写成C 11 var uniqueID1 function var id 0 return function return
  • 如何在 ASP.NET MVC 中将 XML 文件发送到客户端

    在 ASP NET MVC 中 我有一个数据库表 我想在某个视图页面上有一个按钮 如果某个用户单击该按钮 我的应用程序将生成包含数据库中所有行的 XML 文件 然后 应将包含 XML 的文件发送到客户端 以便用户看到下载弹出窗口 同样 我希
  • strtok() 使用安全吗[重复]

    这个问题在这里已经有答案了 我读到了很多负面的东西strtok 有人说它已经过时 有人说它不是线程安全的 等等 那么真相是什么 我可以使用吗strtok 它是线程安全的吗 Note 我正在使用 Visual C 您可以使用它 它是标准库的一
  • C# 异步任务比同步慢

    你知道为什么同步斐波那契方法比异步 等待更快并且比异步任务更快吗 我在每个项目方法上都使用了异步 所以主要是这是一个非常糟糕的方法 Code static int FibonacciSync int number if number 0 r
  • 头文件中实现的函数的静态与内联

    我想到的方式inline在 C 中用于链接 作用域 我把它放在同一个篮子里extern and static对于全局对象 通常 对于在头文件中实现的函数 我的首选解决方案是将其设为静态 In Foo h static void foo Do
  • C# 中类似图的实现

    所以我有一个对象 我们称之为 Head 它有一个对象列表 C C1 C2 C3 T T1 T2 和 M M1 M2 并且所有这些都是相互关联的 例如 Head gt C1 C2 C3 T1 T2 M1 M2 T1 gt C1 C2 T2 g
  • 为什么像 BindingList 或 ObservableCollection 这样的类不是线程安全的?

    我一次又一次发现自己必须编写 BindingList 和 ObservableCollection 的线程安全版本 因为当绑定到 UI 时 这些控件无法从多个线程更改 我想理解的是why情况就是这样 这是设计错误还是故意的 问题是设计一个线
  • QSpinBox 输入 NaN 作为有效值

    我正在尝试扩展 QSpinBox 以能够输入 NaN 或 nan 作为有效值 根据文档 我应该使用 textFromValue valueFromText 和 validate 函数来完成此操作 但我无法让它工作 因为它仍然不允许我输入除数
  • 模板与非模板类,跨编译器的不同行为

    我在一些应用程序中使用编译时计数器 它确实很有用 昨天我想用 gcc 编译一个程序 我之前使用的是 msvc 并且计数器的行为在模板类中发生了变化 它在模板类中不再工作 过于简化的代码 Maximum value the counter c
  • ASP.NET MVC 动作过滤器

    有谁知道即使在 CATCH 块中 ActionFilterAttribute 类的 OnResultExecuted 方法是否也会执行 ie CookiesActions public ActionResult Login Usuarios
  • 列表到优先队列

    我有一个 C 大学编程项目 分为两个部分 在开始第二部分时应该使用priority queues hash tables and BST s 我 至少 在优先级队列方面遇到了麻烦 因为它迫使我自己重做第一部分中已经实现的许多代码 该项目是关
  • 如何在 C++ 运行时更改 QML 对象的属性?

    我想在运行时更改 QML 对象的文本 我尝试如下 但文本仍然为空 这是后端类 class BackEnd public QObject Q OBJECT Q PROPERTY QString userFieldText READ userF
  • 节点*链表中的下一个

    我是数据结构和算法的新手 我遇到了以下代码 typedef struct node int data node next 谁能告诉我为什么我们要声明节点 next next 不能声明为 int next 吗 因为你希望能够做到n gt ne
  • 使用 OleDbCommand / OleDbDataAdapter 读取 CSV 文件

    我不明白为什么 但是当我使用 OleDbDataAdapter 或 OleDbCommand 读取 CSV 文件时 在这两种情况下 生成的数据结构良好 它识别文件头中的列 但行数据都是空字符串 我之前已经成功进行过多次 CSV 处理 因此我
  • 应在堆栈上分配的最大数量

    我一直在寻找堆栈溢出有关应在堆栈上分配的最大内存量的指南 我看到了堆栈与堆分配的最佳实践 但没有关于应该在堆栈上分配多少以及应该在堆上分配多少的指南 有什么想法 数字可以作为指导吗 什么时候应该在堆栈上分配 什么时候应该在堆上分配 多少才算
  • 意外的 const 引用行为

    include
  • 'iter' 的名称查找已更改为新的 ISO 'for' 范围

    我正在尝试编译下面的两个文件 但从编译器收到错误消息 gcc 4 3 3 Linux 错误位于带有以下符号的行 LINE WITH ERROR 我做错了什么 我该怎么改变 路易斯 g c b h b cpp b cpp In functio
  • 基础设施 - 同步和异步接口和实现? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在实现库 基础设施时 并且该 API 的用户希望同步和异步使用代码 我读到混合同步和异步并不是一个好主意 例如 同步实现包括等待异步实现 显然
  • 检查一个数是否是完全平方数?

    我认为以下代码存在精度问题 bool isPerfectSquare long long n long long squareRootN long long sqrt n 0 5 return squareRootN squareRootN
  • 如何根据当前日期时间发现财政年度?

    我需要基于当前或今天的日期时间的财政年度 假设我们认为今天的日期是10 April 2011 那么我需要输出为Financial Year 2012在某些情况下 我需要以短格式显示相同的输出FY12 我想以两种方式显示 在我们的要求中 考虑

随机推荐

  • Puppeteer:从使用延迟加载的页面中抓取整个 html

    我正在尝试获取使用延迟加载的网页上的整个 html 我尝试过的是一直滚动到底部 然后使用 page content 我还尝试在滚动到底部后滚动回页面顶部 然后使用 page content 两种方法都会抓取表格的一些行 但不是全部 这是我的
  • ActionBar.Tab 类型已弃用

    我正在尝试在 Eclipse 中创建滑动选项卡 但是当我导入时android app ActionBar Tab 它警告我导入 ActionBar Tab 类型已弃用 它使我的大部分代码成为警告并删除它 import android sup
  • 当浏览器忙于执行一些长时间运行的 JavaScript 时,WebDriver API 阻塞行为

    我在文档中的某个地方读到 WebDriver API 是非阻塞的 除了一些像 driver get 的 API 因此 执行 WebElement click 或 isDisplayed 通常应该是异步的 当然 假设启用了本机事件 我有一个简
  • Django:渲染快捷函数中的 context_instance 参数有什么用?

    有关 渲染 快捷方式的文档 https docs djangoproject com en 1 3 topics http shortcuts render 根据上面的链接 上下文实例参数定义为 用于渲染模板的上下文实例 默认情况下 模板将
  • 查找张量中沿轴的非零元素的数量

    我想找到沿特定轴的张量中非零元素的数量 有没有 PyTorch 函数可以做到这一点 我尝试使用非零 http pytorch org docs master torch html highlight nonzero torch nonzer
  • NSMutableArray 在 iPhone 应用程序中使用 NSLog 时不显示实际值

    我正在做一个数组的 NSLog 但它显示以下值而不是数据 我不知道如何解决这个问题并从数组中获取值 if surveyQuestions surveyQuestions NSMutableArray alloc init Total Sur
  • pandas 中没有“from_csv”方法

    当我尝试使用时from csvpython 3 7 中的方法 我收到归因错误 import pandas as pd pd DataFrame from csv adr AttributeError type object DataFram
  • 从javascript中的日期获取月份数

    我有一个 daterangepicker 函数 它以 2016 年 5 月 6 日的格式返回选定的日期 我想要做的是将月份提取为整数 因此从上面我应该能够返回数字 5 这是返回所选日期的代码行 getDateString new Date
  • 列表理解创建嵌套列表

    我想创建每月天数列表每年列表的嵌套列表 31 29 31 30 31 28 31 30 with mm 1 2 3 4 yy 2012 2013 但我的代码 result append calendar monthrange y m 1 f
  • 透明菜单/导航栏

    我无法解决 CSS 问题 我有一个应该是透明的导航栏 但由于不透明度属性以及它们是透明导航栏的子元素 其上的链接也会变得透明 你能帮我解决这个问题吗 如果您不希望链接文本受到影响 您应该修改以下规则 容器选择器看起来像这样 containe
  • 使用wireshark或其他工具绘制RTT直方图

    我有一个小型办公室网络 但我遇到了巨大的互联网链接延迟 我们有一个简单的网络拓扑 一台配置为运行 ubuntu 服务器 10 10 的路由器的计算机 2 个网卡 一个连接互联网 另一个连接办公室网络 和一个连接 20 台计算机的交换机 我在
  • 私有继承 VS 组合:什么时候使用哪个?

    私有继承VS组合 我有点困惑何时使用它们 由于私有继承在某种程度上密封了继承链 给出 class A private int z protected int y public int x class B private A B s data
  • QTreeView自定义各行的行高

    是否可以重新定义某个行中某些单独行的行高QTreeView 我有一个习惯QTreeView 风俗QAbstractItemModel和一个习惯QStyledItemDelegate 但似乎所有的sizeHint方法要么只调用一次 最初 要么
  • 如何在CARET中自定义模型来执行PLS-[Classifier]两步分类模型?

    这个问题是同一线程的延续here https stats stackexchange com questions 81727 what is the best strategy to train and validate classific
  • iOS 错误:“xxxx”没有可见的 @interface 声明选择器“alloc”

    这是我的 TextValidator 类 TextValidator h import
  • 如何在 Spark Java 中遍历/迭代数据集?

    我正在尝试遍历数据集来进行一些字符串相似度计算 例如 Jaro winkler 或余弦相似度 我将数据集转换为行列表 然后使用 for 语句进行遍历 这不是有效的 Spark 方法 所以我期待 Spark 中有更好的方法 public cl
  • 具有多个 url 路径的 CherryPy MethodDispatcher

    是否MethodDispatcher from CherryPy处理多个 url 路径 我正在尝试做类似下面的事情 但是虽然要求 customers工作正常 要求 orders始终返回 404 没有任何内容与给定的 URI 匹配 class
  • Node.js 中的作业队列

    我正在node js 中寻找一个可以由php 调用的作业队列管理器 这是一个需要发送电子邮件 创建 pdf 文件等的 Web 应用程序 我想对这些应用程序执行异步 php 进程 流程示例 用户请求 php 页面 Php调用作业队列管理器并添
  • 如何订购 kif 测试用例序列?

    我使用了最新版本的 KIF 框架并创建了几个测试用例 KIFTestCase 的子类 我可以知道有什么方法可以改变测试运行序列的顺序吗 例如我有 testA m testB m testC m 当我按下 cmd U 进行测试时 如何制作诸如
  • C# 字段命名指南?

    我将自己编写一些 C 代码 但我想确保遵循最广泛接受的命名约定 以防我想引入其他开发人员 发布我的代码或出售我的代码 现在我遵循微软设定的命名约定 因为它们似乎是最广泛接受的 他们没有提到的一件事是私有字段的命名 在大多数情况下 我看到它们