language-agnostic - 我应该使用像 IEnumerable 这样的接口(interface),还是像 List<> 这样的具体类

标签 language-agnostic oop polymorphism

我最近在其他地方表达了我对此的看法*,但我认为它值得进一步分析,所以我将其作为自己的问题发布。

假设我需要在我的程序中创建和传递一个容器。至少在现阶段,我可能对一种容器与另一种容器没有强烈的看法,但我确实选择了一个;为了论证起见,假设我将使用 List<>。

问题是:编写我的方法来接受和返回高级接口(interface)(例如 C# 的 IEnumerable)会更好吗?或者我应该编写方法来获取和传递我选择的特定容器类。

我应该寻找哪些因素和标准来决定?哪种程序可以从其中一种或另一种中受益?计算机语言会影响您的决定吗?表现?程序规模?个人风格?

(这还重要吗?)

**(作业:找到它。但请在寻找我自己的答案之前在这里发布您的答案,以免偏见您。)*

最佳答案

您的方法应始终接受执行其功能所需的最不具体的类型。如果您的方法需要枚举,请接受 IEnumerable .如果需要做IList<> - 特定的东西,根据定义你必须给它一个 IList<> .

关于language-agnostic - 我应该使用像 IEnumerable 这样的接口(interface),还是像 List<> 这样的具体类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/613652/

相关文章:

ios - View 应该包含模型引用吗?

oop - 如何将对象从其基类转换为子类

language-agnostic - 在设计像 SO 这样的在线社区代表系统时要考虑什么?

c++ - 简单的拼写检查算法

python - 当 value 是 cls 的实例时,您可以注释返回类型吗?

java jackson |如何序列化指定具体接口(interface)的对象

MySQL - 基于多态表值的条件查询结果?

haskell - 惰性和多态值

algorithm - 3D 六边形瓦片 map 上的光线追踪 (LoS)

algorithm - 贪心算法 : highest value first vs earliest deadline first