如何包装/拆分长表达式?

时间:2011-06-17 13:17:33

标签: c#

我有一个表达式和两种分割方式:

List<string> list = 
            collection.Select(
                control => SearchForControl(
                    control, someOtherParameters)).Select(
                        customControl => customControl.InnerText).ToList();

List<string> list = collection.
                    Select(control => SearchForControl(control, someOtherParameters)).
                    Select(customControl => customControl.InnerText).ToList();

什么是更可读/更好? 在第二种情况下放置点的位置:在行的开头或结尾?

6 个答案:

答案 0 :(得分:2)

我认为几乎每个人都会认为第二个更具可读性,因为它可以将查询操作(SelectWhere等)巧妙地放在另一个之下。

对于点,我会将它们放在线的开头,如下所示:

var list = collection
               .Select(control => SearchForControl(control, someOtherParameters))
               .Select(customControl => customControl.InnerText)
               .ToList();

原因是在不破坏语法的情况下,更容易从此表达式复制/粘贴行。

答案 1 :(得分:0)

这是一个样式问题,因此您会发现世界上有编码器的答案可能很多。

我更喜欢自己的第二种方法,但是在线的开头有点。

答案 2 :(得分:0)

为什么不呢?

List<string> list = collection.Select(control => 
    SearchForControl(control, someOtherParameters).InnerText).ToList();

您不需要两个选择。

如果你确实需要像第二种情况那样换行,我会将这些点放在行的开头,这样你就可以看到该行是一个延续。

答案 3 :(得分:0)

对于linq,我觉得如果你排列这样的linq方法(在开头用点),它看起来最简单:

List<string> list =
  collection
    .Select(
      control => SearchForControl(control, someOtherParameters))
    .Select(
      customControl => customControl.InnerText)
    .ToList();

答案 4 :(得分:0)

刚愎自用:

List<string> list = 
  collection.
  Select(control => SearchForControl(control, someOtherParameters)).
  Select(customControl => customControl.InnerText).ToList();

答案 5 :(得分:0)

我更喜欢使用默认样式规则的ReSharper自动格式化。这一点源于在20名开发人员团队中开发大项目的经验。 :)