看得好心累,到处都是 interface 的 go 代码该怎么阅读

2017-10-24 01:54:19 +08:00
 johnsneakers
同事写的一个比较大的功能里面,到处定义的 interface, 平均实现一个 interface 的类方法至少 3 个,大段大段的 if 多层嵌套,看得想自杀。
3923 次点击
所在节点    Go 编程语言
32 条回复
araraloren
2017-10-24 11:53:41 +08:00
看不懂楼主在烦恼什么,鸭子类型就是这个样子,就拿 c++ 的模板来讲

template <typename T>
void doSomething(T& t)
{
t.doFoo();
}

你在这里不借助 IDE 也不好说传进来的 t 到底是个什么类型,因为只要实现了 doFoo 函数接口
这里的调用就没有问题(类比于 golang 的 interface )
lixm
2017-10-24 13:53:49 +08:00
golang 的 interface 看起来确实很累,因为隐式实现, 尤其当 interface 的方法比较多的
GeruzoniAnsasu
2017-10-24 13:57:05 +08:00
到处都是 template 的 c++代码怎么阅读
到处都是 interface 的 java 代码怎么阅读。。。。
bk201
2017-10-24 14:02:20 +08:00
@nekoyaki java 特别喜欢过度追求设计模式
====
这是写代码的人而不是 java
BBCCBB
2017-10-24 14:09:55 +08:00
ls +1, 辣鸡写什么都是辣鸡
ChristopherWu
2017-10-24 14:26:18 +08:00
啥需求会到处写 interface ?我认为都是在滥用了。。
写过一年 go,用到 interface 的地方屈指可数。
johnsneakers
2017-10-24 14:38:30 +08:00
@wweir 就是不熟悉代码,所以看完一个方法的三种实现特别费神,边看边猜到底在实现什么。

@zts1993 我用的就是 goland, 请问咋分析, 这种实现 interface 的方法每次想看一跳转就跳到 interface 上面去啥都看不了。我现在要看都是 ctrl+f 全文搜哪些地方在实现这个方法,每个地方实现都要看一下。 想死
zts1993
2017-10-24 14:39:56 +08:00
@johnsneakers #27 高版本 goland interface 上有箭头可以列出所有实现。和 java 差不多
johnsneakers
2017-10-24 14:40:23 +08:00
@araraloren 因为 go 是隐式实现啊, 根本不知道这个地方的方法具体实现是在哪里,需要一个一个实现看。
myself659410
2017-10-25 09:15:31 +08:00
interface 方便写代码,却实不方便读代码
freestyle
2017-10-29 23:50:12 +08:00
>>>我用的就是 goland, 请问咋分析, 这种实现 interface 的方法每次想看一跳转就跳到 interface 上面去啥都看不了。>>>我现在要看都是 ctrl+f 全文搜哪些地方在实现这个方法,每个地方实现都要看一下。 想死
@johnsneakers
更新一下 goland, interface{}左边有绿色按钮点击可以列出有哪些 struct 实现了这个 interface
mathgl
2017-10-31 10:37:29 +08:00
想起 C 代码大段的 void*

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/400084

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX