Skip to content

Files

Latest commit

cb31273 · Jan 8, 2022

History

History
38 lines (30 loc) · 5.4 KB

3.md

File metadata and controls

38 lines (30 loc) · 5.4 KB

三、为 .NET Core 仓库做贡献

那个。NET Core 项目已经开发出来,现在正在 GitHub 上以开源的方式进行维护。然而,就像每个项目一样,为了成为“好公民”,你必须遵循一些编码规则和行为准则。在这一章中,我们将讲述如果你想为这个项目做贡献,你必须遵循的编码准则。

在某个时间点,团队将根据编码指南(我们将在本章后面讨论)重新设计项目的完整代码库。同时,您应该:

  • NOT发送样式更改的 PRs。例如,不要发送 PRs 将所有出现的 Int32 重命名为 Int。
  • NOT发送 PRs 以升级代码,从而使用更新的语言功能。这些特性可以在新代码中使用,但是对于现有代码来说,这是一个全新的东西。
  • GIVE优先考虑您正在更改的项目或文件的当前样式,即使它偏离了一般准则。
  • NOT 分支机构提交已全部装运的任何类型的原料药增补。NET 框架。此外,不要向尚未批准的原料药提交公关。
  • INCLUDE 添加新功能时进行测试。修复 bug 时,首先添加一个测试,突出显示当前行为是如何被破坏的。
  • KEEP讨论集中。
  • NOT用大拉请求给团队惊喜。相反,提出一个问题并开始讨论,这样团队可以帮助你的发展。
  • NOT提交没有写的代码。如果您发现您认为很适合添加的代码。NET Core,提出一个问题并开始讨论,然后再继续。
  • NOT提交更改许可相关文件或标题的 PRs。

一般规则是遵循 Visual Studio 默认值。然而,还有一些更详细的案例。对于 C++文件(。cpp 和。h),您应该使用 clang-format(3.6+版)。更改任何 C++或 H 文件后,合并前,运行位于src/Native/format-code.sh的 shell 脚本;该脚本将确保所有本机代码文件都遵循编码风格准则。

对于非代码文件(。xml 等。)没有具体的规则,但一般来说,您应该享有与已经编写的内容保持一致的特权。编辑文件时,保持新代码和更改与文件中的样式一致。在新文件的情况下,您应该继续遵循相同类型的其他文件中使用的约定。最后但并非最不重要的一点:运用良好的判断力。如果一个组件是新的,一定要使用在那种情况下被广泛认为是合适的。

使用 GitHub 上的官方项目文档作为来源,这里是您应该遵循的完整指南列表:

  1. 我们使用 Allman 样式大括号,其中每个大括号都从一个新行开始。一个单行语句块可以不带大括号,但是该块必须在自己的行上适当缩进,并且不能嵌套在使用大括号的其他语句块中(参见第 381 期的示例)。
  2. 我们使用四个空格的缩进(没有制表符)。
  3. 内部和私有字段我们用_camelCase ,可能的话用 readonly 。用_ 给实例字段加前缀,用s_ 给静态字段加前缀,用t_ 给线程静态字段加前缀。在静态字段上使用时,readonly 应该在静态之后(即static readonly 而不是readonly static )。
  4. 除非绝对必要,否则我们避免this.
  5. 我们总是指定可见性,即使它是默认的(即private string _foo 而不是string _foo )。可见度应该是第一个修饰符(即public abstract 而不是abstract public )。
  6. 命名空间导入应该在文件顶部指定,在namespace 声明之外,并且应该按字母顺序排序。
  7. 任何时候都要避免多条空行。例如,在一个类型的成员之间不要有两个空行。
  8. 避免虚假的自由空间。例如,避免 if (someVar == 0)... ,其中点标记虚假的自由空间。如果使用 Visual Studio,请考虑启用“查看空白(Ctrl+E,S)”,以帮助检测。
  9. 如果文件的样式与这些准则不同(例如,私有成员的名称为m_member ,而不是_member ,则该文件中的现有样式优先。
  10. 我们只在很明显变量类型是什么的时候使用var (即var stream = new FileStream(...) 而不是``var stream = OpenStandardInput() )
  11. 我们用语言关键词代替 BCL 类型(即intstringfloat 代替Int32StringSingle 等。)对于类型引用和方法调用(即int.Parse 而不是``Int32.Parse )
  12. 我们使用 PascalCasing 来命名所有的常量局部变量和字段。唯一的例外是互操作代码,其中常量值应该与您通过互操作调用的代码的名称和值完全匹配。
  13. 我们用nameof(...) 代替“... ”只要有可能和相关。
  14. 如果你认为遵循这些规则会很难,不要担心——团队已经提供了一个.vssettings文件来自动正确设置 Visual Studio 格式。该文件位于corefx回购的根目录。此外,有一个基于罗斯林的工具,你可以用来检查你的代码的“健康”。这个工具叫做CodeFormatter,在项目内部被积极使用。这里有

在开源项目中,许可是关键。麻省理工学院的许可证主要由。NET Core,但微软生产的发行版。NET Core 使用。NET 库许可证。那个。NET Core repo 也可能包含不同许可的来源,团队在需要时会在第三方通知中概述它们。。NET Core 二进制文件是单独生产和许可的。