你喜欢这些中的哪一个?
foreach(var zombie in zombies)
{
zombie.ShuffleTowardsSurvivors();
zombie.EatNearbyBrains();
}
或
zombies.Each(zombie => {
zombie.ShuffleTowardsSurvivors();
zombie.EatNearbyBrains();
});
发布于 2010-01-08 07:21:33
第二种形式。
在我看来,你必须使用的语言结构和关键字越少越好。C#本身就有足够的外来crud。
一般来说,你需要输入的越少越好。说真的,你怎么会不想在这种情况下使用"var“呢?当然,如果明确是你唯一的目标,你仍然会使用匈牙利符号……您有一个IDE,当您将鼠标悬停在...时,它会为您提供类型信息。当然还有Ctrl+Q,如果你使用的是Resharper...
@T.E.D。委托调用的性能影响是次要考虑的。如果您确实要这样做,请运行dot trace,看看它是否不可接受。
@Reed Copsey: re非标准,如果开发人员不能弄清楚".Each“在做什么,那么你就有更多的问题了,哈。修改语言以使其更好是编程的一大乐趣。
发布于 2010-01-08 07:48:07
在这里,您正在做一些非常必要的事情,比如编写一条语句而不是一个表达式(因为假设Each
方法不返回值)和变异状态(人们只能假定这些方法会返回值,因为它们看起来也不返回值),但是您试图通过将语句集合作为委托传递给“函数式编程”。这段代码与函数式编程的理想和习惯用法相去甚远,那么为什么要试图将其伪装成这样呢?
尽管我非常喜欢像C#这样的多范式语言,但我认为当在更高的层次上混合范式时(例如,以函数式或命令式编写的整个方法)而不是在单个语句或表达式中混合多种范式时,它们是最容易理解和维护的。
如果您正在编写命令式代码,请诚实对待并使用循环。这没什么好丢脸的。命令式代码本身并不是一件坏事。
发布于 2010-01-08 07:04:24
This question包含了一些有用的讨论,以及关于该主题的哲学方面的MSDN博客文章的链接。
https://stackoverflow.com/questions/2024305
复制相似问题