C#编码风格 – 线长/包线

换行有助于代码可读性吗?

是否有一个普遍接受的礼仪使用线延续?

为什么用这个:

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

而不是这个:

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

编辑:从行继续到换行重新措辞我的问题

C#中不使用行继续 ,因为需要显式行终止符( ; )。

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


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

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

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

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

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

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

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

现在我们已经澄清这与实际的行继续字符和简单的换行符号无关 – 你告诉我。 这个:

 IEnumerable 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 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); 

你还想读哪个?

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

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

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

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

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

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

Perl Google图书上的最佳实践

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

对于我可能使用的任何语言,我一直在努力遵守他的规则:C#,Java,Perl,JavaScript,VBScript,VB,PHP,……

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

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

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

好吧,我发现它并不那么明显。 实际上,您必须在注册表中实际创建一个字符串参数。 这是我在SO上发现的关于它的post。 希望能帮助到你。

在Visual Studio中向编辑器添加指南

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

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