C#编码样式 - 线长/包边线

时间:2010-01-28 02:09:31

标签: c# coding-style

换行是否有助于代码可读性?

是否有普遍接受的使用续行的礼仪?

为什么要用这个:

SomeMethod(int someInt, Object someObject,
   String someString, bool someBool)
{
    ...
}

而不是:

SomeMethod(int someInt, Object someObject, String someString, bool someBool)
{
    ...
}

编辑:将我的问题从行继续改为换行

6 个答案:

答案 0 :(得分:33)

Line continuations未在C#中使用,因为需要显式行终止符(;)。

如果你在风格方面询问,将一条线分成多行是否是一个好主意,这是值得商榷的。 StyleCop规则强制在一行上定义一行,或者将每个元素定义在一个单独的行上。我个人认为这是一个很好的指导方针,如果它太长而不适合80-90字符宽的编辑器,我通常会选择将一条线完全划分为它的部分。


根据您的新问题进行修改:

在这种情况下,我会遵循上面的指导原则。就个人而言,就你的具体情况而言,我将其留在一行:

SomeMethod(int someInt, Object someObject, String someString, bool someBool) 
{ 
    ... 
} 

这是一个很好的,简短的moethod声明,我认为没有理由将它拆分。如果参数的数量和类型的长度对于一行文本变得很长,我只会拆分它。

但是,如果你拆分它,我会将它分成每个参数的单独行:

SomeMethod(
    int someInt, 
    Object someObject, 
    String someString, 
    bool someBool) 
{ 
    ... 
} 

这样,至少很明显它是如何以及为什么分裂的,开发人员不会意外地跳过一个参数,因为两个参数在一行上。

答案 1 :(得分:18)

现在我们已经澄清说这与实际的行继续字符和简单的换行没有关系 - 你告诉我。这样:

IEnumerable<int> orderIDs = context.Customers.Where(c => c.CustomerID >= 1 && c.CustomerID <= 10).Select(c => c.Orders).SelectMany(o => o).OrderBy(o => o.OrderDate).Select(o => o.OrderID);

还是这个?

IEnumerable<int> orderIDs = context
    .Customers
    .Where(c => c.CustomerID >= 1 && c.CustomerID <= 10)
    .Select(c => c.Orders)
    .SelectMany(o => o)
    .OrderBy(o => o.OrderDate)
    .Select(o => o.OrderID);

你还想读哪个?

答案 2 :(得分:5)

我认为在过去的几年中,线路长度的限制逐渐变长(或消失),因为每个人都获得了宽屏高分辨率显示器,而且很少再打印出代码。我所研究的项目都没有官方指南,我们只是在编辑器窗口的宽度上使用常识和换行符(每个人在大致相同的分辨率下使用相同的基本Eclipse窗口布局)。我认为这种方法没有问题。

答案 3 :(得分:5)

我赞成在逻辑点断线。原因是帮助源代码控制差分和合并功能。我发现,如果将包含许多元素的语句分解为多行,那么理解这种环境中的变化就会容易得多。

监视器很大。但是你可以发现自己在笔记本电脑上工作并执行合并,你可以在屏幕上的不同窗口中拥有基础,源和目标分支。统计字符:17英寸笔记本电脑上的每个窗口只有大约55个字符宽。

如果您正在远程工作,您会发现水平滚动没有得到很好的优化,您可能会想到一些关于程序员在一行上编写具有15个参数的函数的指责。

因此,请考虑您必须处理源代码的所有方法,并在满足您所有需求的地方打破行。

答案 4 :(得分:2)

几年前,我读过Damian Conway的 Perl最佳实践。这是以下链接

Perl Best Pracices on Google Books

有一整章涉及代码布局。我对代码布局的所有感受都总结在他的写作中。我强烈推荐这一章。它可以很容易地应用于C#。

我一直在努力坚持他的规则,无论我使用什么语言:C#,Java,Perl,JavaScript,VBScript,VB,PHP,......

在本书中,Conway建议使用78列线。我必须承认我违反规则并坚持到80但我认为没关系。

我已将此规则集成到我使用的每个编辑器(Notepad ++,Komodo,Vi,Vim,Visual Studio 2005),以便有一个显示此限制的可视指南。

有些人可能想知道如何在VS上显示指南,呵呵?

我发现它不是那么明显。实际上,您必须在注册表中实际创建一个字符串参数。这是我在SO上发现的关于它的帖子。希望它有所帮助。

Adding a guideline to the editor in Visual Studio

答案 5 :(得分:0)

就个人而言,我希望能够“看到”一切。然后,我有一个相当不错的显示器。但严重的是,我喜欢漂亮的小函数与巨大的函数与嵌套的“if”语句。与一行代码相同。

在一天结束时,归结为个人偏好以及您和您的团队成员决定的任何事情。始终如一。并且支持下一个查看代码的人的可读性。