换行是否有助于代码可读性?
是否有普遍接受的使用续行的礼仪?
为什么要用这个:
SomeMethod(int someInt, Object someObject,
String someString, bool someBool)
{
...
}
而不是:
SomeMethod(int someInt, Object someObject, String someString, bool someBool)
{
...
}
编辑:将我的问题从行继续改为换行
答案 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上发现的关于它的帖子。希望它有所帮助。
答案 5 :(得分:0)
就个人而言,我希望能够“看到”一切。然后,我有一个相当不错的显示器。但严重的是,我喜欢漂亮的小函数与巨大的函数与嵌套的“if”语句。与一行代码相同。
在一天结束时,归结为个人偏好以及您和您的团队成员决定的任何事情。始终如一。并且支持下一个查看代码的人的可读性。