浅谈Go类型别名

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

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

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

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

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

目录
相关文章
Go语言实战:错误处理和panic_recover之自定义错误类型
本文深入探讨了Go语言中的错误处理和panic/recover机制,涵盖错误处理的基本概念、自定义错误类型的定义、panic和recover的工作原理及应用场景。通过具体代码示例介绍了如何定义自定义错误类型、检查和处理错误值,并使用panic和recover处理运行时错误。文章还讨论了错误处理在实际开发中的应用,如网络编程、文件操作和并发编程,并推荐了一些学习资源。最后展望了未来Go语言在错误处理方面的优化方向。
聊聊 Go 语言中的 JSON 序列化与 js 前端交互类型失真问题
在Web开发中,后端与前端的数据交换常使用JSON格式,但JavaScript的数字类型仅能安全处理-2^53到2^53间的整数,超出此范围会导致精度丢失。本文通过Go语言的`encoding/json`包,介绍如何通过将大整数以字符串形式序列化和反序列化,有效解决这一问题,确保前后端数据交换的准确性。
86 4
|
4月前
|
Go
go语言常量的类型
【10月更文挑战第20天】
39 2
Go: struct 结构体类型和指针【学习笔记记录】
本文是Go语言中struct结构体类型和指针的学习笔记,包括结构体的定义、成员访问、使用匿名字段,以及指针变量的声明使用、指针数组定义使用和函数传参修改值的方法。
Go MongoDB Driver 中的 A D M E 类型是什么
Go MongoDB Driver 中的 A D M E 类型是什么
59 1
Go json 能否解码到一个 interface 类型的值
Go json 能否解码到一个 interface 类型的值
51 1
|
7月前
|

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等