【发布时间】:2008-11-26 11:34:30
【问题描述】:
我今天编写了我的第一个 C# 迭代器。哇哦。
有趣的是,它有副作用。我的迭代器从目录中过滤掉无效文件并返回一系列有效文件进行处理。当遇到无效文件时,它会将其移动到另一个目录。
我尝试将其实现为 LINQ 查询,但真的不喜欢 where 子句的谓词具有副作用的事实。那是一种明确的气味。
我可以显式地实现它,循环遍历所有文件并依次处理好或坏,但这不是很优雅。更好的解决方案是将其分成两个列表(好的和坏的)并依次处理。
但后来我想起了迭代器。我现在有了一个迭代器,它产生有效文件并处理(移动)无效文件。
所以,我的问题是:迭代器有这样的副作用是个坏主意吗?我是否在迭代器中隐藏了太多功能?
【问题讨论】:
-
@sharptooth - 你是想要分类徽章还是什么?