提高嵌套 foreach 循环的可读性 - 我应该创建单独的方法吗?

Improve Readability of Nested Foreach Loops - Should I Create Separate Methods?

提问人:chatay 提问时间:7/27/2023 更新时间:7/27/2023 访问量:26

问:

我的 C# 项目中有一段代码,涉及嵌套的 foreach 循环。虽然它按预期工作,但由于它的复杂性,我发现它很难阅读和维护。我想知道将嵌套的foreach循环重构为单独的方法以提高代码可读性和可维护性是否是一个好主意。

代码如下:

  foreach (Action action in actions)
        {
            foreach (User receiver in action.Receivers)
            {
                if (user != null)
                {
                    string softwareName = "";
                    string server = "";
                    string messageText =  "";
                    string messageSubject =  "";
                    string messageLinkText =  "";
                    messageText = string.Format(messageText, receiver.GetNameForEmail(), softwareName, "3", action.DueDate, action.Name, $"{server}", messageLinkText, action.GetNameForEmail());
                    if (messageText != "")
                    {
                        messageText = string.Format(messageText, user.Email);
                        Message message = _emailService.CreateMessage(new string[] { user.Email }, messageSubject, messageText);
                        await _emailService.SendEmailAsync(message);
                    }
                }
            }
        }

1- 将嵌套的 foreach 循环分解为单独的方法以提高代码可读性是否被认为是最佳实践?

2- 将嵌套循环重构为单独的方法有什么好处?

3- 在为此类循环创建其他方法时,是否存在任何性能或开销问题?

您可以提供一些常规参考和资源来支持将嵌套循环重构为单独的方法或不:)

C# .NET foreach 重构的 可读性

评论

1赞 DavidG 7/27/2023
你可以做 但是,恐怕这个问题对于 Stack Overflow 来说太基于意见了。foreach(var recevier in actions.SelectMany(a => a.Receivers)) { .... }
0赞 jeb 7/27/2023
什么?也许你的意思是?userreceiver
0赞 chatay 7/27/2023
@DavidG我可以这样做,但只是想知道是否建议为第二个foreach部分创建另一种方法

答: 暂无答案