Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果可以在源代码管理提交、签出、差异等之前和之后自动格式化代码,那么公司真的需要标准的代码样式吗?_C#_Java_Svn_Version Control_Autoformatting - Fatal编程技术网

C# 如果可以在源代码管理提交、签出、差异等之前和之后自动格式化代码,那么公司真的需要标准的代码样式吗?

C# 如果可以在源代码管理提交、签出、差异等之前和之后自动格式化代码,那么公司真的需要标准的代码样式吗?,c#,java,svn,version-control,autoformatting,C#,Java,Svn,Version Control,Autoformatting,如果可以在源代码管理提交、签出、差异等之前和之后自动格式化代码,那么公司真的需要标准的代码样式吗 这感觉就像是自编程开始以来一直在激烈争论的标准编码风格,如“将括号放在下一行”或“正确缩进您的代码”不再是必需的 我意识到,在语言中白空间很重要,差异将不得不考虑它,但是对于风格是个人偏好的语言来说,真的有必要再担心它吗? < P>如果商店使用的编码风格与开发工具相同,则总是不错的。 否则,如果有大量代码已遵循与工具标准不同的车间标准,则有两种选择: 修改所有代码以遵循工具标准,或 保持现有的车间标

如果可以在源代码管理提交、签出、差异等之前和之后自动格式化代码,那么公司真的需要标准的代码样式吗

这感觉就像是自编程开始以来一直在激烈争论的标准编码风格,如“将括号放在下一行”或“正确缩进您的代码”不再是必需的


<>我意识到,在语言中白空间很重要,差异将不得不考虑它,但是对于风格是个人偏好的语言来说,真的有必要再担心它吗?

< P>如果商店使用的编码风格与开发工具相同,则总是不错的。

否则,如果有大量代码已遵循与工具标准不同的车间标准,则有两种选择:

  • 修改所有代码以遵循工具标准,或
  • 保持现有的车间标准
  • 许多商店都是这样做的。不管怎样,确实需要有某种标准,并且需要遵循

    某些开发工具允许您调整其标准。在某些情况下,您可以使这些工具与车间标准保持一致。

    不,不太可能

    如果您实际上能够使它一致地工作,而不是使它工作,那么标志代码由于不同的代码布局风格而发生了更改


    然而,这只是编码标准的一小部分。它不包括多个返回语句、三元运算符的使用与否等。

    如果您可以确保团队中的每个人都“正确”地看到源代码,那么这可能不再重要了格式化,无论他们认为是什么。但是我没有看到一个可以做到这一点的系统——你可以做其中的一部分(比如,签入/签出之前和之后的重新格式化),但这些天你还必须考虑到Web版本到版本控制、与版本控制系统直接交互的外部代码审查系统等。 标准代码样式的主要用途是(IMHO)确保您可以轻松阅读其他团队成员的代码,而无需开始反向工程,因为所有代码都是使用相同的指导原则编写的。缩进和括号的位置似乎是这方面的主要障碍,但在我看来,它们只是一个很小的部分,有些夸张,也不是很重要的部分需要使代码一致


    不幸的是,我不知道有任何工具可以自动将一致的编码原则应用于源代码…

    自动格式化实际上只能处理空白

    它不会解决开发人员给变量起奇怪而荒谬的名字的问题。 它不会解决一些开发人员在抛出异常时函数返回null的问题


    我相信其他人可以想出更多的例子。

    这就是我们在我的工作中所做的:

    我们都使用Eclipse。我们没有使用Eclipse的政策,但不知何故,我们都不是IDEA/IntelliJ的人。我们还认为我们的代码应该在编写时考虑到遗留问题。这意味着我们的代码必须以某种方式可读,即使是几年后(#1),无论是谁编写的,也不管此人是否还在公司

    Eclipse有两个方便的功能,一个是保存时自动格式化,另一个是特定的。从链接的屏幕截图中可以看到,它可以用XML进行配置。因此,我们公司的每个员工都可以使用一堆预制的XML:s,这样当新员工进来时,我们就可以引导他完成整个过程,并为他们配置Eclipse(是的,这样做有点不好)因此它实际上使用了我们提供的格式XML:s。我们不执行保存时的自动格式,我们不想完全侵入,我们只想将所有开发人员推向正确的方向。为了提高兼容性,我们主要使用中定义的规则

    接下来是重要的部分,即实际构建。我们是那些接受自动构建的人,我们使用自动构建。除此之外,我们的配置中还有两个重要部分:

    • 我们使用在提交某些内容时触发构建
    • 我们利用了几个可用于哈德逊的插件,包括与最重要的插件结合使用的插件
    Checkstyle插件是我们代码风格实施指南中的魔术师:

  • 将代码提交到CVS后,将触发Hudson build
  • 成功完成构建(所有单元测试都通过等)后,Checkstyle检查实际的源文件
  • Checkstyle对我们为其定义的基于代码的规则进行排序
  • 持续集成游戏会看到Checkstyle的结果,并为拥有代码相关部分所有权的人奖励/扣分
  • 排行榜显示系统中每个提交人的总分
  • 基本上,这意味着当任何人将难看的代码提交到我们的CVS中时,我们的构建服务器会自动减少该人的分数

    这意味着,最终我们中的任何一个人都可以根据外观和OO原则(如德米特定律、圈复杂度等)中的一般代码质量在排行榜上排名。当然,这不是一个完全严肃的统计数据,但这很好地表明,当导致在ou中启动构建时,您做错了什么r CI不会降低您的分数-我们的大多数提交值在1到5分之间

    它能工作吗?有点,我不认为我们中的任何人在我的工作中会写难看或无法维护的代码,就我个人而言,我喜欢搜索各种分数,所以这肯定会激励我制作看起来不错的代码,并遵循我所知的所有OO范例

    作为一家公司,我们真的需要它吗?我想我们应该按照你从阅读整个答案中看到的那样做,这是可以考虑的