Francesco Cirillo于不久前发起了“反对if行动”,受此影响,Matthew Podwysocki也用这种方式提出了自己的声明,即“反对for行动”。
Matthew Poswysocki生活在华盛顿特区,作为微软的高级咨询师,维护或参与了诸多社区活动(如DC ALT.NET讨论组),并致力于推广各种敏捷实践。这次他提出,在代码中应该尽量使用和构建可以进行组合的函数,而不是显式的循环语句(包括for、foreach和while)。
Matthew认为,通过循环来实现的功能往往可以分为以下三种情况:
查询(映射、过滤等等)
聚合(求和、计数等等)
进行一些有副作用(Side Effect)的操作(读取文件、发送消息等等)
Matthew看来,使用for循环来处理“查询”和“聚合”时,最大的问题在于将关注点放在了如何做(How)而不是做什么(What)。他举了一个例子,“找出100以内所有质数”,并给出了一个实现:var numbers = Enumerable.Range(1, 100);var output = new List<int>();foreach(var number in numbers) if(IsPrime(number)) output.Add(number);
Matthew认为: