type A struct {
a ComponentA
b ComponentB
d ComponentD
}
func NewA(a ComponentA, b ComponentB, d ComponentD) {}
type B struct {
b ComponentB
c ComponentC
d ComponentD
}
func NewB(b ComponentB, c ComponentC, d ComponentD) {}
// 大概有十几个这样的 struct
....
这十几个 struct 都有一些共同的变量(当然也不是完全一模一样)。 现在是每个结构体的 New 方法传的参数都不一样。当然这十几个 struct 其实做的功能比较相似(每个 struct 其实是 k8s 里面 crd 的 controller ),代码结构也有一定的相似性。
现在重构后的代码
type Common struct {
a ComponentA
b ComponentB
c ComponentC
d ComponentD
// 一共大概 20 几个
...
}
type A struct {
*Common
}
type B struct {
*Common
}
这样重构后,每个结构体的 New 方法的参数就很简单,只要传一个 Common 就好了。 但是,这样每个结构体其实引入了一些自己不需要的东西,我自己感觉不是特别好。
各位大佬怎么看?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.