Post

List.ForEach and Single Responsibility Principle

Mladen discusses the performance of List<T>.ForEach vs foreach and finds that the earlier is more performant than other methods of iterating collections. The comments are rather interesting and most focus on the readability/maintainability of one versus the other. The primary argument is that you should prefer maintainability/readability over performance. I completely agree with this.

I disagree with the commenters in that I feel that List<T>.ForEach actually reads better. In addition, the List<T>.ForEach construct stays true to the single responsibility principle. Other classes should not know how to iterate a collection, only that the interface supports it. The calling class only passes a delegate that should be executed on each item in the collection.

I talked about this point in an article entitled refactoring away external loops. The code in the article is .NET 1.1 specific, but the point of the article still applies.

This post is licensed under CC BY 4.0 by the author.