关于不同的编码风格/指南

时间:2014-02-18 08:16:39

标签: c# coding-style

昨晚有些东西进入了我的脑海。我想知道为什么我们在项目之间仍然有不同的编码风格。由于风格是个人的,我认为最好这样对待它。我们为什么不呢?对此有任何技术限制吗?

让我举几个例子:

// Code sample 1
randomObject
    .Colors
    .Where(item => item.Color == Color.Red)
    .Count();

// Code sample 2    
randomObject.Colors.Where(item => item.Color == Color.Red).Count();

// Code sample 3
randomObject.Colors.Count(item => item.Color == Color.Red);

// Code sample 4
if(criteria) {
    // Do stuff
} else {
}

// Code sample 5
if( criteria )
{
    // Do stuff
}
else {}

代码示例1和2在技术上做同样的事情(如果我没有记错的话)。另一方面,代码示例2和3是不同的,它们在引擎盖下做了不同的事情,但给出了相同的结果。因此,它不能被重写为代码示例1,但是有可能将其格式化。代码示例4和5,我想您以前见过它们,我认为它们不需要进一步解释。

所以,让我惊讶的是......我们不能在本地使用首选的编码风格,在提交/签入之前,代码将根据服务器设置重新格式化。

**旁边信息:我在不同的存储库中编码,代码样式各不相同。在这些之间切换总是意味着我必须改变我的思维方式以匹配他们的风格。

**大声思考:我们不能提交/签入AST s?

2 个答案:

答案 0 :(得分:2)

您可以考虑使用像ReSharper这样的工具来安装VS(不是免费的),它提供可自定义的代码格式提示。您可以为每个存储库设置不同的设置。

我的意见是坚持“官方”存储库样式,如果有的话,虽然它可能很烦人。它提高了所有开发人员的代码可读性。如果没有这样的标准,那么尝试选择一种不会成为同事障碍的风格。

例如,样本5比4更好,因为它不那么拥挤,而且至少在我看来,更容易看出哪条线正在做什么。我也认为样本1优于2,尽管我使用了另一种变体:

randomObject.Colors
            .Where(item => item.Color == Color.Red)
            .Count();

此外,样本2和3给出相同的结果,但3更有效,除了更简洁。我认为这是非常可取的。

关于您的想法是在本地使用自己的风格进行编码并在提交之前重新格式化,您将如何做到这一点?有工具,但我相信他们不能盲目信任,所以你需要在重新格式化后检查一切是否按预期工作。这需要时间,可能更多的是从一开始就采用“标准”样式进行编码。您可以手动重新格式化,但可能更糟。

答案 1 :(得分:1)

我认为Caramiriel想要提出的问题是,当在SourceControl系统中对两个版本的代码文件进行差异处理时,由于编码风格的变化,会出现误报。 / p>

在同一个项目上工作的开发团队可以共享相同的格式设置,但总会有一些摩擦,因为每个人都有自己的编码风格,并且必须与其他团队成员妥协。 恕我直言,在checkin(在服务器级别配置)自动应用某种编码风格,并在执行get时应用您自己的编码风格将是一个很棒的功能。 这里的问题是,在获取文件时重新格式化,将导致结账......