Coding style 火卫一风格指南

Coding style 火卫一风格指南,coding-style,d,phobos,Coding Style,D,Phobos,我刚刚开始研究火卫一的源代码,它有很多不同的风格和注释掉的代码 网页上的样式指南非常小,我只找到了2006年和2004年的断开链接 有更新、更全面的指南吗 PS:最初是在D.learn新闻组被问到的,但由于我没有得到任何答案,我想我可能会在这里尝试,尽管这可能是一个黑暗中的尝试现有的任何指南都已经过时,不应该再存在了。我不相信有任何一种D风格的指南被认为是有效的,我也不认为沃尔特·布赖特、安德烈·亚历山德雷斯库等希望有这样的指南。此外,正如我记得的,在年,赫伯·萨特和安德烈说风格指南是个坏主意(

我刚刚开始研究火卫一的源代码,它有很多不同的风格和注释掉的代码

网页上的样式指南非常小,我只找到了2006年和2004年的断开链接

有更新、更全面的指南吗


PS:最初是在D.learn新闻组被问到的,但由于我没有得到任何答案,我想我可能会在这里尝试,尽管这可能是一个黑暗中的尝试

现有的任何指南都已经过时,不应该再存在了。我不相信有任何一种D风格的指南被认为是有效的,我也不认为沃尔特·布赖特、安德烈·亚历山德雷斯库等希望有这样的指南。此外,正如我记得的,在年,赫伯·萨特和安德烈说风格指南是个坏主意(或者至少是那些真正具体的想法),但我必须拿出这本书来确定他们到底说了什么。所以我怀疑火卫一(安德烈负责)是否会有任何风格指南;我当然不知道有什么。对进入Phobos的代码进行格式化可能有一些指导原则(比如使您的代码看起来与模块的其他部分相似或类似),但是像Andrei或其他Phobos开发人员这样的人必须回答这个问题。当然,大约有15个不同的开发人员在Phobos上工作,如果没有强制的样式指南,那么代码中肯定会有几种不同的样式

所以,我不认为D或Phobos真的有任何推荐的编码风格。据我所知,D背后的主要人物并不特别支持风格指南,他们当然也没有推动风格指南。所以,现在真的没有,我也不希望将来会有

编辑:好的,我去查了一下赫伯·萨特和安德里·亚历山德雷斯库在《圣经》中的确切内容。与其说他们反对编码标准,还不如说他们反对特别严格的标准,这些标准强制执行个人喜好或过时的做法。我不打算在这里引用整本书(这是一本好书,你可能无论如何都应该拿起它),但这里有一些要点

  • 不要指定缩进多少,但要缩进以显示结构
  • 不要强制执行特定的行长度,但要保持行长度可读
  • 不要过度注册命名,但要为我们提供一致的命名约定
  • 不要预先定义注释样式(除非工具将某些样式提取到文档中),但要编写有用的注释
他们举的一些例子是

  • 支架的位置应该无关紧要,但它应该是一致的和可读的
  • 在空格和制表符之间,他们似乎并不关心编码标准是否对此有所说明
  • 他们反对C++中的匈牙利符号,但认为它在不太安全的语言中可能是有价值的。
  • 他们完全反对强制函数中只有一个return语句
无论如何,他们确实认为源文件中的格式应该是一致的。显然,福布斯在这一点上并不一定坚持,但安德烈确实在新闻组上提到了一些通常坚持的惯例,并正在考虑可能强制执行其中一些惯例(实际帖子已存档)

然而,尽管Phobos是开源的,任何人都可以免费提交补丁,但请记住,它是供公众使用的API。只有Phobos开发人员需要查看代码(至少在文档适当完整的情况下)-当然,他们是唯一将直接处理代码的人-因此不需要公开列出的编码标准,即使他们使用一个。看起来他们确实可以使用更多的一致性,而且他们可能正在进行这方面的工作,但第三方所要做的就是使其更具可读性。没有人真的需要知道标准到底是什么(尽管如果你看了足够多的遵循标准的代码,你至少可以大致了解标准说了些什么)


对于D,有一些约定被认为是好的实践(例如通常使用<代码> Auto/<代码>,而不是指定类型,除非您实际上必须指定类型),但是就像C++一样,可以用任何您想要的编码方式进行编码。D开发人员还不够独裁,无法在整个D社区强制推行一种风格。

事情已经发生了很大变化,我认为我应该重新回答这个问题。您可以看到当前的D样式指南,它现在是最新的。它有一些关于格式的规则(例如,没有制表符,每个缩进级别有4个空格),但几乎所有的规则都是关于命名约定的(例如,类型名应该使用PascalCase,而变量和函数应该使用camelCase)。因此,重点是API应该是什么样子,而不是如何格式化代码。正如我在前面的回答中所详细说明的,Phobos开发人员永远不会尝试为整个D命令一种正式的格式样式。事实上,有很多D程序员甚至不遵循官方风格指南中的命名约定

将来可能会对火卫一本身设置更严格的格式设置指南(已经讨论过,但从未做过),以便让提交者更清楚地了解他们应该遵循的样式,并避免关于代码格式的争论(自从我们迁移到github,提交者的数量大幅增加后,这就成为了一个更大的问题),但在这一点上,主要是要确保模块内的代码格式一致。但是,再次强调,即使对火卫一强制执行了更严格的格式规则,这将是针对火卫一的,而不是针对整个D社区。而且有太多不同的意见