如何包装/拆分长表达式
本文关键字:拆分 表达式 包装 何包装 | 更新日期: 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();
什么更可读/更好?在第二种情况下,点放在哪里:在行的开头或结尾?
我认为几乎每个人都会认为第二个更具可读性,因为它将查询操作(Select
、Where
等)一个比一个漂亮。
对于这些点,我会把它们放在行的开头,如下所示:
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名开发人员的团队中开发一个大项目的经验。:)