gpt4 book ai didi

oop - 返回类型的具体类型或接口(interface)?

转载 作者:行者123 更新时间:2023-12-04 16:49:50 25 4
gpt4 key购买 nike

今天我遇到了对象编程风格、具体类型或接口(interface)的一个基本悖论。

方法的返回类型有什么更好的选择:具体类型还是接口(interface)?

在大多数情况下,我倾向于使用具体类型作为方法的返回类型。因为我相信具体类型更灵活,可以进一步使用并提供更多功能。

这方面的阴暗面:耦合。
天使般的:一个具体的类型本身包含你最初将要返回的接口(interface),以及额外的功能。

你的拇指法则是什么?

这有什么编程原则吗?

奖金 : 这是我的意思的一个例子 ReadOnlyCollection or IEnumerable for exposing member collections?

最佳答案

我的经验法则:

1)最初,我让方法返回接口(interface)类型,因为如果需要,以后总是很容易将其更改为具体类型。更难回到另一条路。

2)即使方法被声明为返回具体类型,我也会尽可能对调用者进行编码以使用接口(interface)类型:InterfaceType i = xyz.methodThatReturnsConcreteType(); .

3) 我是否拥有调用代码也会产生影响(内部 API 与公共(public) API):

  • 如果我拥有调用相关方法的代码(即内部 API),那么我越愿意返回具体类型。
  • 如果我不控制调用此方法的代码(例如公共(public) API),我更有可能返回接口(interface)类型。返回具体类型是一种 promise ,一般来说,我 promise 的越少,就越容易。

  • 其他注意事项:
  • 使用接口(interface)进行测试可能更容易,因为我可以使用实现接口(interface)的模拟对象。
  • 有一个外部机会,我想返回 proxy object (现在我真的要找借口了)

  • 综上所述,
  • 我通常返回接口(interface)类型,因为我觉得松耦合的好处超过了完全访问具体类型的便利。
  • 但是,只要方便超过松散耦合的好处,我不反对根据具体情况切换返回具体类型。
  • 关于oop - 返回类型的具体类型或接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2679508/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com