编码标准是否有太多的统一性?


12

是否有太多的统一性?在我工作的地方,我们当然有一些标准,包括命名约定,体系结构,可利用的框架等。但是最近,我认为应该更多地考虑样式的事情很多。

例如if,使用c#??null-coalescing运算符而不是say == null,在多行对一行中编写语句,而不是缩进间隔等。

在我看来,这开始越来越多地成为个人风格的选择,而不必在团队或公司中保持统一。一个人的想法可能更清楚地阅读了另一个人。这种“额外”的均匀性是否有价值?


2
嗨Gratzy,Programmers.SE 不是讨论区;我们在这里解决您可能面临的实际问题。您有实际要解决的问题吗?如果是这样,您能否改写您的问题,以使答案具有建设性,并且不会成为讨论的陷阱?

1
@Gratzy换一种说法,鉴于您个人面临的情况,正确答案的标准是什么?

2
@Mark Trapp根据常见问题解答,这些是提出问题的标准。所有主观问题都应具有建设性。我们如何定义呢?建设性的主观问题…1.激发解释“为什么”和“如何”的答案。2.倾向于有长而不短的答案。3.具有建设性,公正和公正的语气。4.邀请分享经验的意见。5.坚持观点应以事实和参考为依据。6.不仅仅是盲目的社交乐趣。我相信我的问题涉及至少是前4
Gratzy

2
@Gratzy也来自FAQ:“您只能根据自己遇到的实际问题提出实用,可回答的问题。闲谈,开放式问题会削弱我们网站的实用性,并将其他问题推到首页之外。”

2
@Mark Trapp我已经说出了可以接受的答案的标准,是的,因为我已经说过这是一个实际的问题,并且坦率地说,出于对这个问题的兴趣以及我会说其他人都同意的答案。
Gratzy 2011年

Answers:


16

均匀性不是问题(很好),但是刚性或不挠性可以。如果您在追求统一性时变得信条教条,那么对团队造成的伤害可能大于(可能)由此带来的一致性带来的好处。

最好只是为最重要的内容(命名和大写标准,缩进,换行和括号放置等)设置基本样式,为次要的内容(如语句格式,括号周围的其他空格等)设置建议。 ,然后不用担心其余的事情。


1
我去过那里

+1,是我的意思,但更好!
FrustratedWithFormsDesigner

@Pierre是您为什么现在是自由职业者?:)
Nicole

并非如此,但是我遇到了许多痴迷于准则的人。多么极端的情况令人恐惧。我认为您已经很好地定义了限制。

7

当项目生命周期中可能有数十个人在从事项目工作时,当您不得不跳动样式时,有时会感到困惑。想象一下,读一本书,其中不同的作者由不同的作者撰写不同的章节,而这些作者只是在某种程度上保持着写作风格。有可能,但是很烦人。

如今,大多数IDE都可以实施样式,因此,如有必要,您可以分发(作为项目源代码的一部分)IDE首选项文件,该文件指定所选的编码样式并让每个人都安装它并使用其格式化自己编写的代码。我敢打赌,甚至还有一些方法可以在签入时对代码进行重新格式化/样式设置(尽管我还没有对此进行调查)。


是的,您可能在某个地方贴了一个蚂蚁脚本。
Michael K

1
至少IntelliJ可以选择在签入之前重新格式化代码。
妮可(Nicole)

3

我看到的一种过度统一的情况是,无论适用性如何,都有一个适用于所有编程语言的单一标准:

  • goto即使在没有try...的C语言中也不鼓励catch
  • InitialCaps在标准库为的JavaScript中使用名称(如Microsoft的MFC和C#)initialLowerCase

2

我认为没有太多的统一性。但是,我经常发现编码标准的太多特殊性。每个人都将开括号放在单独的行上的好处充其量是可疑的,并且不会超过争论或解决代码中的修饰问题所花费的时间。


2
@Tungano我完全同意。编码标准的自相矛盾之处在于,它们值得拥有,但不值得争论。
Charles E. Grant

3
我看不出如何将特定样式强加给程序员,这将如何帮助您避免这些争论。实际上,我认为要使程序员适应他们不喜欢鼓励那些论点,或者至少是不满情绪的风格。
JohnFx 2011年

1
@JohnFx,因为大多数程序员将意识到样式的一致性对代码质量和可维护性的贡献要比任何特定的样式选择大得多。以我的经验,您可以快速了解团队,了解人们喜欢和不喜欢的地方,并迅速达成共识。有时,某个人会遇到一个特殊的bugaboo,而您将它们容纳进去,那么他们就会屈服于其他人的bugaboo。如果我发现自己在团队中纠缠了五分钟,以了解为什么骆驼案是邪恶的,我只是放弃并屈服,以此来检验我的个人灵活性。
Charles E. Grant

1
我想,大多数程序员认为样式的一致性做出了巨大贡献,但实际上并没有。看起来应该如此,查看与您的宠物风格不匹配的代码很烦人,并且通过代码块“清理”来解决较小的外观问题是拖延的好方法。瞧,我以前也曾经是那个潮流,直到我意识到我只专注于镀金而不是可交付使用的产品。
JohnFx 2011年

1
我使用来自德国团队的代码,几个OSS项目以及我们拥有的一些古老代码以及当前的代码。有些是C,有些是C ++,有些是C#。因此,我必须始终使用几种不同的代码样式。当您这样做时,您将意识到标准中强制规定的样式准则多么小巧。如果我可以从一个项目切换到另一个项目,则可以处理有人将他们的{}放在不同的地方。这就是为什么我认为唯一值得该死的标准是一个带有1条规则的标准:“每个项目内的一致性”。
gbjbaanb 2012年

2

对于一致性,我有两个参数:

  • 促进集体所有权。某人可以去编辑其他人的代码,而不必担心某人的“婴儿”将受到更改的伤害。一种“我们都在一起”的心态。

  • 易于添加。如果已经在其他地方完成了某些操作,则可以将其重新使用。某些约定有时可以使事情更容易阅读或更改,所以这对我来说是另一个好处。

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.