贵公司有编码标准吗?[关闭]


31

最近,我看到Microsoft发布了编码标准文档(“多合一编码框架编码标准”),这让我开始思考...我工作的公司根本没有正式的编码标准。仅有几个开发人员,我们在一起的时间已经足够长,已经演变成类似的样式,这从来都不是问题。

您工作的公司是否有书面的编码标准?如果没有,为什么不呢?有标准会有所作为吗?是否值得从头开始编写标准,还是应该采用其他标准作为自己的标准(即使Microsoft的标准成为您的标准)?


这个问题中的(接近6岁)连结似乎有问题。根据此处的页面:1code.codeplex.com,Microsoft All-In-One Code Framework主页已迁移到blogs.msdn.com/b/onecode。我尚未调查MSDN博客页面以查看(如果或)可以在何处访问该标准。
凯文·费根

Answers:


39

对于团队来说,为每种语言制定单一的编码标准很重要,这样可以避免几个问题:

  • 缺乏标准会使您的代码不可读。
  • 对标准的分歧可能会导致开发人员之间的签到战争。
  • 在同一个班级中看到不同的标准可能会非常烦人。

我非常喜欢Bob叔叔对标准所说的话

  1. 让它们在前几次迭代中进化。
  2. 让他们特定于团队而不是特定于公司。
  3. 如果可以避免,请不要写下来。相反,让代码成为捕获标准的方式。
  4. 不要立法好的设计。(例如,不要告诉人们不要使用goto)
  5. 确保每个人都知道该标准与通信有关,而别无其他。
  6. 经过最初的几次迭代后,请团队共同决定。

3
+1引用鲍伯叔叔。和+1(如果可以的话),建议不要写下来。
Walter 2010年

21
为什么不把它们写下来?
Fishtoaster

8
@Fishtoaster-想法是代码本身记录了标准。正如代码更改时通常不会保留设计文档一样,详细的编码标准文档也会随着标准的发展而与代码不同步。我们要做的是选择一些具有代表性的模块,并将其用作准则。值得写一个简短的介绍性文档(我们使用Wiki并链接到实际代码),向您显示在哪里可以找到代表代码。
Paddyslacker 2010年

好的,如果您认为标准经常在发展,那么代码标准文档就很有意义。这就提出了一个问题,为什么您的标准在不断发展。我能想到的拥有编码标准的最大原因是一致性,如果标准不断发展,您将无法获得一致性。
Fishtoaster

如果该标准归团队所有,则团队应该能够随着时间的推移逐步发展该标准。如果没有,你会拥有两种标准是一个人的想法,或有一些目前正在对这个问题记录的古老建议:programmers.stackexchange.com/questions/1338/...
Paddyslacker

8

我认为有一个编码标准是至关重要的,即使它说的只是“我们使用3空格缩进,并且在下一行使用开括号”。一些好处:

  • 由于使文件之间的编码样式之间的切换很烦人,因此它使阅读整个代码库变得更加容易。
  • 这使读取单个文件更加容易,因为由两个开发人员更新的样式相互冲突的任何文件最终都倾向于将这些样式混合在一起。仔细阅读混用制表符和空格的文件(并在以后进行编辑)是一件麻烦事。
  • 如果有明确的标准,而不是隐含的标准,它使新开发人员更容易使用良好的样式。
  • 一致的命名约定使查找功能/变量变得更加容易。是ArraySort还是array_Sort或sortTheArray或doSortArray还是...?

就是否采用现有标准而言,没有关系-一致性很重要。如果您的开发人员有十几种不同的样式,则不妨选择一个现有的,已发布的样式。如果您都进化成了一种非常一致的样式,只需写下来并使用它。


5

我不同意“我们是X商店”,因此我们以相同的方式将代码格式化为所有语言。

我个人发现大多数语言都有不同的接受样式。

当C程序员使用C格式编写Java代码时,我实在无法忍受。它不仅看起来不像Java,而且还愚弄了他们以为他们可以在Java中使用其他类似C的实践。

我认为,如果您有标准,应该按语言进行


1
+1。我的Objective-C看起来并不像我的PHP。
丹·雷

2

我的前雇主有编码标准。我也在考虑为自己正式记录一个文档。

或者,如您建议的那样,找到一个不错的现有标准并加以修改/采用。对于一家公司,我当然会建议他们研究现有的编码标准,但要根据自己的特殊需求创建/修改它们。不一定需要从头开始创建一个,但应注意确保编码标准对公司创建的软件类型有意义。

是的,拥有编码标准会有所不同,但这不是万灵丹。代码更加清晰易读,因为没有太多不同的样式冲突,可以避免一些常见的错误/陷阱。即使使用标准,您也会在编码样式上有所不同,但是这种可变性会减少。目标不是尝试避免所有变化或为每种可能的情况做准备。过于复杂的编码标准可能比没有标准更糟。


1

不幸的是没有。因此,每个人都有使用间距,缩进等的自己的方式,所有东西都混合在一起了(这样,我们甚至不必使用“怪”功能就可以知道谁是代码行的作者!)

但是,甚至更糟的是,有人用意大利语写变量和类名,其他人用英语写...

我总是根据我使用的语言,库和框架来调整样式,以使源代码看起来统一而朴素。


3
哎呀,我什至从未考虑过多种语言……这很困难。
Walter 2010年

1

请记住,这是特定于多合一代码框架的编码标准文档。

我曾在多家公司工作,其中一些公司拥有现有的标准,而某些(大多数)我曾帮助开发该标准。在大多数情况下,如果您正在进行基于.NET的开发(即使您并非这样做,大多数规则仍然适用),则应查看Framework Design Guidelines。尽管这是特定于编写面向公众的API,但大多数准则同样适用于任何代码。

代码标准最大的问题是保持代码相对简单和直接。您希望开发人员能够对所提供的准则进行内部化,因此给他们50页以上的文档毫无用处。如果您想提供背景,示例等,您仍然可以创建该文档,但是您还需要一些归结为一组项目符号准则的内容。您的编码标准还必须是灵活的,实时的文档,该文档需要随着技术的变化而变化。


1
是的,我了解我所引用的文档特定于“多合一编码框架”,但这是阅读该文档时出现的问题的源头。
Walter 2010年

1

编码标准的讨论归结为:

  • 是的,您需要它们,一致性和简洁的代码是良好开发的基石。
  • 只要每个人都遵循相同的标准,它们几乎无关紧要。
  • 不要自己写,最终会陷入无尽痛苦的讨论中。有很多受欢迎的地方。
  • 使用公共标准(例如MSDN上的公共标准)会给您一个不可辩驳的第三方。如果要与他们争论,请参阅第2点。

如果您在Visual Studio中使用C#开发,则StyleCop万灵丹。如果您还使用ReSharper,那么StyleCop for ReSharper插件就很棒。


1

我们是blub商店,因此我们使用blub编程约定。

现在,Paul Graham和朋友比我们聪明得多,但我们的blub程序员,我们都能互相阅读blub,实际上,任何blub程序员都可以阅读我们的blub代码。

实际上,由于blub的设计,任何blub程序员都可以读取任何单个blub文件并理解该文件,因为blub没有宏系统。

如果我们使用C或C ++进行编程(即使我们使用blub编程,我们都是多语言的),但对于新代码或开源项目(我们正在使用的项目的标准),我们大多使用blub风格。


1

您需要一个标准。我在应用程序的不同角落看到了不同的标准,这些标准有不同的线索,所有人都希望以“自己的方式”做到这一点。也许“标准”的概念被误解了。太疯狂了 而且,最坏的标准是由一个人产生的。不管那个人是谁,如果一个人独自制定标准,几乎可以肯定会成为一个坏人。


1

它可以帮助人们,也可以使用以下工具真正地帮助您:

如果您希望能够使用任何一种自动代码格式,那么您确实需要标准化它将要使用的规则,否则您将不断得到很多毫无意义的格式更改,从而使差异变得混乱。

静态分析工具的默认规则集可以很好地检查特定的命名方式,并且可能很容易全面遵循该规则,然后编写一堆新规则。(除非您要完全关闭规则)

最后,将需要与团队以外的人进行协商的任何事情标准化是有益的。也就是说,您可能希望在标头中使用标准的版权声明,因为您不想运行通过公司法律团队编写的每个新文件,并且您当然想在第一时间获得任何公共API的名称

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.