如何包装/拆分长表达式

本文关键字:拆分 表达式 包装 何包装 | 更新日期: 2023-09-27 17:59:19

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

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

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

如何包装/拆分长表达式

我认为几乎每个人都会认为第二个更具可读性,因为它将查询操作(SelectWhere等)一个比一个漂亮。

对于这些点,我会把它们放在行的开头,如下所示:

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

原因是在不破坏语法的情况下,可以更容易地将行从该表达式中复制或粘贴到该表达式中。

这是一个风格问题,所以你会发现世界上有多少编码者,就有多少可能的答案。

我自己更喜欢第二种方法,但在行首有点。

为什么不这样?

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

你不需要两次选择。

如果你确实需要包装东西,比如在第二种情况下,我会把点放在这行的开头,这样你就可以看到这行是一个延续。

对于linq,我发现如果你把linq方法排列成这样(开头有点),它读起来最容易:

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

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