这句话出自 https://en.m.wikipedia.org/wiki/Robustness_principle
但是标准库也经常是返回 interface ,最简单就是 error,底层对上层屏蔽自己的实现细节,这不是很自然么
这句话我看很多文章都是在拿工厂模式说事,是不是只针对部分场景,如果上层只是想要一组通用的行为,底层返回 interface 没啥问题吧
1
mcfog 2021-11-19 09:57:05 +08:00 via Android 1
https://github.com/go-proverbs/go-proverbs.github.io/issues/37
rob pike 并不 100%赞同这句话并拒绝将其加入 golang proverbs |
2
2i2Re2PLMaDnghL 2021-11-19 10:27:45 +08:00
1. 我没发现你这个链接里有标题里这段话,如是来源具体历史版本,请提供;
2. Robustness principle 实质上导致了世纪初的 Web 生态大混乱:因为不是所有人都严格遵守之,而兼容性测试并未进行广泛配合; 3. 我认为最优兼容性实践是在所有未定义行为上人为施加随机性,依据是耗散结构理论。 |
3
Nitroethane 2021-11-19 10:56:51 +08:00 via iPhone
最近在看 docker 源码,这种设计挺普遍的,方法的返回值类型是 interface ,实际 return 的是实现了 interface 的结构体实例。我觉着这种思路挺好啊,对外部屏蔽内部的实现细节
|
4
iyear OP @2i2Re2PLMaDnghL be conservative in what you do, be liberal in what you accept from others 算是这句话的口语化流传版本吧
|
5
JohnSmith 2021-11-19 13:03:02 +08:00
过早抽象不好
|
6
mason961125 2021-11-19 13:37:07 +08:00
emmm 其实我想问一下,不返回接口的话你们都是怎么 mock 的...?
|