代码复用

  1. 函数块(副本式copy)
  2. 函数块(简单模板——参数)
  3. 模板块
  4. 模板复用
  5. 构造模型(设计方案)
  6. 总结

该篇探讨代码复用。

一开始学编程时:

1
2
3
func main() {
    fmt.Println("Hello, World!")
}

代码集中一起。

函数块(副本式copy)

后来代码多了,开始用函数块

1
2
3
4
5
6
7
func sayHello(){
    fmt.Println("Hello, World!")
}

func main() {
    sayHello()
}

这时,其实已经开始复用代码了。

函数块(简单模板——参数)

上下文隔绝且没有参数的函数块,如:

1
2
3
func sayHello(){
    fmt.Println("Hello, World!")
}

是一个副本(copy)。

有时,我们想要更灵活地复用代码,像填模板似的。于是,带参数的函数出现了。

1
2
3
func sayHello(name string){
    fmt.Println("Hello,"+name)
}

模板块

后来,出现了需要模板的需求,就出现了二维角度的需求,编程世界常见的有XML、Java类、关系数据库。这种复用是通过设计「模板」,通过导入数据从而达到复用的二维效果。

1540481385368

模板复用

颗粒度到了模板之后,人们就思考着如何复用模板。模板的复用即,旧模板依赖新的模板。

现今有两种模式:

  • Java、xml为首的静态模板。他们一旦定义下来旧不许被修改。(适合大工程)
  • JavaScript的原型继承。模板在代码运行中可被修改。(较灵活)

构造模型(设计方案)

之前的复用是建立于普通数据的前提下,可以随意地输入(编程语言层次)。之后的复用中使用的数据,从普通数据变成了代码,这种复用俗成设计模式。

该层次不再是编程语言层次,所以不存在官方用法,因此出现了各种各样的方案和模型。这一层次的复用,需要更多的理解和经验。

总结

复用层次越高,灵活性就越低,需理解的内容就更多。