不要被套路了!请不要尝试简化这些代码!

14977987-fa40ec5789000ce6.png

Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。Kubernetes 简称 K8s,用「8」替代 K 和 s 之间的 8 个字母「ubernete」。

K8s 的 pv_controller.go 源码大约 1700 行(含注释),其中包括:230+ 个 if 语句、30 个 else 语句、5 个 else if 语句嵌套在一起。

14977987-da033f2290ec0b62

https://github.com/kubernetes/kubernetes/blob/ec2e767e59395376fa191d7c56a74f53936b7653/pkg/controller/volume/persistentvolume/pv_controller.go#L323

乍一看,这代码违背了 KISS (Keep it simple, stupid)原则。

但是,K8s 的工程师们在注释中用大写英文标注:「请不要尝试简化这些代码!」并且还写了两遍。

14977987-5f25780450c590a3
14977987-de6a030c16af15d3.png

为啥强调两遍?K8s 他们在注释中特意解释了。大意如下:

这个控制器故意以一种非常冗长的风格编写。你会发现:

1、每个 if 语句都有一个匹配的 else 语句(检查客户端 API 调用的简单错误除外);

2、有很多被显式地注释的东西;

我们把这种风格叫做“航天飞机风格”。航天飞机的风格意味着,要确保每个分支和条件都得到考虑和说明。NASA 为航天飞机等应用程序编写的代码也是如此。

最初,这个控制器的工作被分成三个控制器。控制器是努力简化 PV 子系统的成果。在此过程中,我们要确保在代码中处理和解释了每一个条件,即使这会导致无 op 代码分支。

因此,控制器代码可能看起来过于冗长、注释过多和“分支”。但是,这里记录了大量的业务知识和上下文,以便确保未来的维护者能够正确地推断绑定行为的复杂性。因此,对这个文件的修改,应该保留并增加航天飞机的风格。

此文来源于网络 若有侵权 请联系晓雯微信:Pingwen20 删除

猜你喜欢

转载自blog.csdn.net/weixin_34082177/article/details/87238057