看得好心累,到处都是 interface 的 go 代码该怎么阅读
同事写的一个比较大的功能里面,到处定义的 interface, 平均实现一个 interface 的类方法至少 3 个,大段大段的 if 多层嵌套,看得想自杀。 ----------------------- 以下是精选回复-----------------------
答:if 是在转类型么?试试 case ?(虽然也好不到哪里去。。。
答:如果是不带 else 的 if 嵌套,是可以换种写法拉平的。
三种以上具体实现的 interface 不是标准玩法么,要是只有一种实现,去用 interface 那才是恶心。你需要的是对代码的熟悉以及一个高度集成的 IDE
答:这个有点恶心, 把 golang 写得和动态语言一样, 后面根本不好维护
答:一个 interface 没有多个实现,那还要这个 interface 做什么??
答:interface 不是本来就是用来抽象然后多实现的吗?
答:这样子很难维护~~
你同事在坑你们项目组了。
就不能封装下吗?至少 alias 一下。。
答:goland 可以分析
答:interface 不就是做这种抽象的嘛?不是很清楚,可能是 Java 程序员 XD
答:我用 interface 有时候只是为了把不通层的代码分开,不一定有多个实现。我是觉得这样更好读一些。比如 rpc 层只处理 rpc 本身的逻辑,至于数据具体的存取,就放在数据层实现,rpc 层定义自己需要的存取 interface,数据层实现。不一定一个 interface 就一定要有多个实现吧。
答:静态语言一切都在源代码里定义清楚了,这个 interface 的具体实现是什么,在前面肯定有声明的,很容易搞清楚,另外用好的 IDE 也能帮你自动分析。
还可以善用 godoc,生成 html 文件看,结构非常清晰。
答:其实问题是项目本身复杂,用了 interface 已经算好的了,不用的话更难看
答:明显用错了
比如 io.Reader 就只实现 Reader 的功能,不要再看各个 type 自己的实现才是 interface 的正确用法
答:能用就行了,至于代码、风格、神马之类的,当没有看到就好了。
答:用 interface,if 都没毛病。看不到代码我们能说啥
答:看不懂楼主在烦恼什么,鸭子类型就是这个样子,就拿 c++ 的模板来讲
template <typename T>
void doSomething(T& t)
{
t.doFoo();
}
你在这里不借助 IDE 也不好说传进来的 t 到底是个什么类型,因为只要实现了 doFoo 函数接口
这里的调用就没有问题(类比于 golang 的 interface )
答:golang 的 interface 看起来确实很累,因为隐式实现, 尤其当 interface 的方法比较多的
答:到处都是 template 的 c++代码怎么阅读
到处都是 interface 的 java 代码怎么阅读。。。。
答:ls +1, 辣鸡写什么都是辣鸡
答:啥需求会到处写 interface ?我认为都是在滥用了。。
写过一年 go,用到 interface 的地方屈指可数。
答:interface 方便写代码,却实不方便读代码
0条评论