浅谈Go类型别名

简介: 类型别名的存在,是 渐进式代码修复(Gradual code repair) 的关键,什么是渐进式代码修复?

类型别名的存在,是 渐进式代码修复(Gradual code repair) 的关键,什么是渐进式代码修复?

举一个例子,重构。重构代码,我们当然希望重构后的好处,能够适用于所有代码,但是,重构的好处与代价是成正比的,往往一次重构会伴随着大量的修改,随着代码量越来越大,一次完成所有修改变得不可行。修复需要逐步完成。
假如现在,我移动了 xxxpkg.buff 到 xxxpkg.byte 下,或许只是移动了两个文件,但是带来的是需要修改 N 个引用的文件,这样的修复,比实际的移动多了 N倍,随着代码量的增长,可能是更多倍。

在代码量少时,我们可以一次性完成所有的修复,这样的修复被称为原子代码修复(atomic code repair),它的概念很简单,就是在一次提交中,更新所有的因为重构带来的问题修复,但是概念的简单会被实际的复杂性抵消,一次提交可能非常大,大的提交很难去一次性修复,出现问题也很难去溯源,最重要的是,可能会与其他同学的工作产生冲突,例如某个同学,在工作时,使用了旧的 API,合并代码时,并不会产生冲突,而我的提交错过了它的引用。
因此,我们需要一个过渡期,这个过渡期就是为了逐步替换,也就是渐进式代码修复,将旧的引用,逐步替换,同时将旧的换为新的,这就是渐进式代码修复,它的缺点是比原子代码修复的工作量更大,但是它更容易提交、审查,并且保证了,没有人引用后再删除旧的类型别名。

总结一下,类型别名,在特定情况下,帮助代码逐步修复。

目录
相关文章
|
1月前
|
程序员 编译器 Serverless
掌握Go语言:解锁Go语言中的类型魔法,类型判断与转换的奇妙世界(9)
掌握Go语言:解锁Go语言中的类型魔法,类型判断与转换的奇妙世界(9)
|
1月前
|
自然语言处理 Go 索引
Go语言学习8-接口类型
【4月更文挑战第1天】本篇 Huazie 向大家介绍 Go 语言中的接口类型
21 2
Go语言学习8-接口类型
|
4月前
|
安全 Go 开发工具
Go语言学习6-字典类型
【1月更文挑战第7天】本篇 Huazie 介绍 Go语言中的字典类型
28 1
Go语言学习6-字典类型
|
4月前
|
Go 数据安全/隐私保护 索引
Go语言学习5-切片类型
【1月更文挑战第4天】本篇 Huazie 带大家了解 Go 语言的切片类型
39 2
Go语言学习5-切片类型
|
4月前
|
存储 设计模式 Cloud Native
云原生系列Go语言篇-类型、方法和接口 Part 1
通过前面章节的学习,我们知道Go是一种静态类型语言,包含有内置类型和用户定义类型。和大部分现代编程语言一样,Go允许我们对类型关联方法。它也具备类型抽象,可以编写没有显式实现的方法。
51 0
|
6天前
|
Java 编译器 Go
一文速通go语言类型系统
一文速通go语言类型系统
13 0
|
16天前
|
存储 安全 Java
Go语言学习10-指针类型
【4月更文挑战第11天】本篇 Huazie 向大家介绍 Go语言的指针类型
11 2
Go语言学习10-指针类型
|
21天前
|
存储 JSON 缓存
Go语言学习9-结构体类型
【4月更文挑战第8天】本篇 Huazie 向大家介绍 Go语言的接口类型
295 8
Go语言学习9-结构体类型
|
2月前
|
Go Windows
|
3月前
|
Java Go 数据安全/隐私保护
Go语言学习7-函数类型
本篇 Huazie 向大家介绍 Go 语言的函数类型
34 1
Go语言学习7-函数类型