编写可维护的Go代码 (colobu.com)

【简介】

编写可维护的代码是最基本的要求。清晰度、可读性和简单性都是保持代码可维护性的各个方面。它应该使某人加入您的项目或在有人离开后维护代码的过程变得容易。可维护性的衡量指标是代码更改的容易程度以及与这些更改引起的风险性。为了有效地编写Go程序,了解Go语言的属性和地道写法,并使用与命名、程序构建、格式等相关既定约定是至关重要。

本文是一些有助于编写可维护的Go代码的良好实践。

点击查看全文 >>

@技术头条 2022-05-23 00:05分享 / 原作者微博:@colobu / 0个评论
要不要再学学下面的文章?
像一名教育者一样思考代码质量 (mp.weixin.qq.com)
一句广为流传的话:代码是写给人看的,而不是为了给机器执行。然而,编写人类易于阅读的代码,这说起来容易做起来难。这件事需要花费几年时间去学习,花费几十年才能掌握。我也许可以提供一个捷径:像一名教育者一样思考代码质量。“捷径”这个词表达的能力很强大。这并不是一个捷径。但我认为,这种观点很重要。Alan Kay 说过,观点抵得上 80 点智商。
by @code小生 2022-08-01 10:07 分享 查看详情
Webpack 打包后代码执行时机分析与优化 (www.alloyteam.com)
代码执行时机将决定着是否能够正常执行,当依赖文件没加载完成就开始执行、使用对应模块,那么将会导致执行异常。这在 “存在资源加载失败时,加载重试影响原来文件的执行顺序” 的场景下尤为常见。

webpack 构建除了进行模块依赖管理,实际上,也天然地管理了 entry 与 chunk 多文件的执行时机,但缺少了对 external 文件管理,当 external 文件加载失败或未完成时,执行、使用对应模块同样将导致异常。为此,wait-external-webpack-plugin 应运而生,以 webpack 插件的形式,补充 external 的执行管理。本文将进行简要说明。
by @技术头条 2022-07-24 21:17 分享 查看详情
Go: logrus性能提升 (wklken.me)
在Go项目中,logrus是一个相对完备的第三方日志库,用起来非常顺手, 特别是WithField/WithFields/WithError。我们开发一些对性能要求非常高的应用,例如API网关/权限服务等,需要记录流水日志,此时日志库的性能直接会影响整体接口性能,所以针对性地做了一些优化。
by @技术头条 2022-07-24 21:03 分享 查看详情
四舍五入在Go语言中为何如此困难 (mp.weixin.qq.com)
在 Go 语言中这似乎成为了难题,在 stackoverflow 上搜索 [go] Round 会存在大量相关提问,Go 1.10 开始才出现 math.Round 的身影,本以为 Round 的疑问就此结束,但是一看函数注释 Round returns the nearest integer, rounding half away from zero ,这是并不常用的 Round half away from zero 实现呀,说白了就是我们理解的 Round 阉割版,精度为 0 的 Round half up 实现,Round half away from zero 的存在是为了提供一种高效的通过二进制方法得结果,可以作为 Round 精度为 0 时的高效实现分支。
by @code小生 2022-07-24 11:01 分享 查看详情
你的代码会说话吗?(上) (insights.thoughtworks.cn)
编程高手不是能够快速写出可用代码的人,而是能够快速写出别人一眼就能看懂的代码的人。
by @Thoughtworks 2022-06-27 09:50 分享 查看详情
六则糟糕代码的优化方案分享 (mp.weixin.qq.com)
变量、属性和函数名应该使用小驼峰式命名法,并且名称是可描述的. 应该避免使用单字符变量和不通用的缩写。
by @code小生 2022-06-26 11:29 分享 查看详情
使用BPF, 将Go网络程序的吞吐提升8倍 (colobu.com)
经典的bpf(classical Berkeley Packet Filter) 是非常好用的一个技术,在一些特殊的Go底层网络编程的场合,可以很好的提高性能。
by @技术头条 2022-06-19 19:27 分享 查看详情
编写可维护的Go代码 (colobu.com)
编写可维护的代码是最基本的要求。清晰度、可读性和简单性都是保持代码可维护性的各个方面。它应该使某人加入您的项目或在有人离开后维护代码的过程变得容易。可维护性的衡量指标是代码更改的容易程度以及与这些更改引起的风险性。为了有效地编写Go程序,了解Go语言的属性和地道写法,并使用与命名、程序构建、格式等相关既定约定是至关重要。

本文是一些有助于编写可维护的Go代码的良好实践。
by @技术头条 2022-05-23 00:05 分享 查看详情
面试官提问三个Go接口的概念, 10年gopher竟无言以对 (colobu.com)
自 Go 1.18后, Go的interface的含义有所变化, 三个新的和Go接口有关的概念很多人还不知道: type set(类型集合)、specific type(特定类型)和structural type(结构类型)。
by @技术头条 2022-05-06 23:30 分享 查看详情
Go泛型系列:再简化,省略接口 (colobu.com)
如果你一直关注Go泛型的设计和实现,一定知道Go泛型代码实现是通过类型参数(type parameter)实现的,当运行泛型代码时,类型参数(type parameter)由类型参数(type argument)替代。(很遗憾parameter和argument都被翻译成了中文参数)

类型参数(type parameter)也有类型,也就是描述这个参数类型行为的元数据,被成为约束(constraint)。最通用的约束就是内建的any类型,它代表任意的类型。
by @技术头条 2022-05-06 23:16 分享 查看详情