C#编码样式-行长/包装行

C#编码样式-行长/包装行,c#,coding-style,C#,Coding Style,换行是否有助于提高代码可读性 使用行连续体是否有公认的礼仪 为什么要使用这个: SomeMethod(int someInt, Object someObject, String someString, bool someBool) { ... } 与此相反: SomeMethod(int someInt, Object someObject, String someString, bool someBool) { ... } 编辑:将我的问题从换行改为换行,因为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<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 OrderID=context.Customers.Where(c=>c.CustomerID>=1&&c.CustomerID c.Orders)。选择many(o=>o)。OrderBy(o=>o.OrderDate)。选择(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);
IEnumerable orderIDs=context
.顾客
其中(c=>c.CustomerID>=1&&c.CustomerID c.Orders)
.SelectMany(o=>o)
.OrderBy(o=>o.OrderDate)
.Select(o=>o.OrderID);

你更愿意读哪一本?

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

我喜欢在逻辑点断线。原因是为了帮助实现源代码控制差分和合并功能。我发现,如果将包含多个元素的语句拆分为多行,那么理解这种环境中的更改会容易得多

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

如果你在远程工作,你会发现水平滚动没有得到很好的优化,你可能会对那些在一行上写15个参数的函数的程序员有一些责备的想法


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

就我个人而言,我喜欢能够“看到”所有内容。再说一次,我有一个相当不错的显示器。但说真的,我喜欢漂亮的小函数,而不是带有嵌套“if”语句的大函数。代码行也一样


归根结底,这取决于个人偏好以及你和你的团队成员的决定。保持一致。并且为下一个查看代码的人提供可读性。

几年前,我阅读了Damian Conway的Perl最佳实践。下面有一个链接

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

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

在这本书中,康威建议使用78列行。我必须承认我违反了规定,坚持到了80岁,但我觉得没关系

我已经将此规则集成到我使用的每个编辑器(Notepad++、Komodo、Vi、Vim、VisualStudio2005)中,以便有一个显示此限制的视觉指南

你们中的一些人可能想知道如何展示VS的指导方针,嗯

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


你的意思是将一条语句分散到多行,还是像VB中的下划线那样的实际延续字符?我认为这个问题很主观,就像问你喜欢红色吗?这都是你的意见。同意邮递员的意见,应该加上主观标签。没有人回答正确,每个人都有自己的观点。可惜每个人都不能有我的观点,哦,没有红色的世界会更美好!同意;我也是一个超级简洁的线路迷。我受不了自动换行。我们的大脑是如何工作的,真有趣——我真的会为这样的事情感到痛苦+我绝对同意把所有的论点分开,或者不分开。前后矛盾只会让事情变得更加混乱。我同意这个答案,但有一个例外。我相信120个字符是今天一个可以接受的行长,因为上下文需要它;但是,如果行数为80-90或更少,我会说“干得好”。@Wilmoore:我同意,除非你的团队有人在笔记本电脑上工作——尤其是在笔记本电脑上,字体大小合理,并且“解决方案浏览器”处于打开状态,通常几乎不超过80个字符的宽度……这是一个修辞性的问题。;)@凯文:这是个反问句……没有结尾。那是非常清晰的;