什么是好代码/坏代码?给普通人的图解示例

发布时间:2023-05-15 09:32:41

我曾经在某个地方读过一句话,基本上有以下内容:

在现代世界,许多人的生活依赖于软件,比如控制大型商用客机飞行系统的软件,但大多数软件开发领域都不受监管。任何人都可以成为自学成才的软件开发人员,没有其他高风险职业的认证或严格要求,如摩天大楼建筑或神经外科。这是一个不受监管的危险领域,因为根据情况,几行坏代码实际上可能会导致生命损失。

那么,作为外行,什么是“坏代码”呢?

作为一个日常约会 5 我知道什么是代码(什么是坏代码,相信我!).有时候我忽略了一个事实,那就是很多人对代码是什么没有概念。

对那些人,我是对的 “你是程序员,你在做什么?” 例如,这个问题给出了以下答案:

我开发了一个非常小的电子开关组件,以不同的方式和不同的配置打开和关闭门。当门打开时,电可以通过,当门关闭时,电被堵塞。因为门太小,不能手工建造,我不得不让人们用电脑建造它们。根据我在电脑上输入的单词,它代表我建造了各种类型的小门。

毫无疑问,正如上述答案所述,软件开发人员/程序员实际上是在构建物理存在但太小而看不见的东西(然而,它可以想象为一个集合或一组小门)。这本身就足够疯狂了,但如果你至少能想象这些场景(比如火车控制程序和飞机飞行时的导航程序),你已经知道了什么 “编码” 有了概念性的理解,祝贺你!然后回到本节标题中的问题 — 什么是 “坏代码”?

按照我们对小门微小组合的比喻,我会说坏代码意味着你有太多的门,以不必要的重复或复杂的方式排列。

由于很难用门做比喻来进一步形象化或解释,我想在这一点上提供另一个比喻,如下所示。

创建旋钮调节器!

假设我们想建立一个旋钮调节器。一个可旋转的旋钮将依次旋转远程位置的另一个旋钮。产品要求如下图所示。旋转一个旋钮,远处的另一个旋钮也会旋转:

什么是好代码/坏代码?给普通人的图解示例_解决方案

坏代码只考虑手头的问题,并提出最简单的解决方案。一个旋钮和一个旋钮调节器由半柔性杆连接。在这个早期阶段,坏代码赢得了奥卡姆剃刀奖(开发速度非常快)。一开始,好的代码似乎有点过度矫正,使用了橡胶带和 2 个轮(开发速度慢)。

什么是好代码/坏代码?给普通人的图解示例_开发人员_02

需求变化,旋钮位置变化!

就像在开发周期中经常发生一样,客户需求在某个时刻会发生变化。在我们的比喻中,客户现在想要一个旋钮旋钮,可以旋转原旋钮侧面的另一个旋钮,如下所示:

什么是好代码/坏代码?给普通人的图解示例_软件开发_03

坏代码需要添加一些偷工减料的组件,使整个系统更加摇摇欲坠,容易出现故障。好的代码只需要在新需求进来的时候稍微调整一下,用更长的橡胶带就能解决这个问题。

什么是好代码/坏代码?给普通人的图解示例_解决方案_04

要求更改,旋钮需要转得更慢!

最后,我们的客户决定他们希望旋钮以不同的速度旋转。输入旋钮的小旋转应导致连接旋钮的大旋转。

鉴于这一新要求,不良代码需要向系统添加更多的组件,以使其更加复杂。另一方面,好的代码只需稍微调整一下,在连接的旋钮侧使用更大的轮子:

什么是好代码/坏代码?给普通人的图解示例_开发人员_05

总结

如上所述,当需求非常简单时,一个好的代码通常看起来有点过分,但当客户需求发生变化时,一个好的代码就会真正闪耀。换句话说,它可以适应未来的规模和变化。另一方面,坏代码看起来很简单,很好,但当系统发生变化或复杂性增加时,它就会变成噩梦。

但也许你在想,“嗯,上面概述的两个系统都达到了同样的效果——旋钮调节器在任何情况下都能成功工作。”

然而,从本质上讲,专业代码是一种合作努力。无论你编写什么代码,无论是现在还是将来,其他程序员都需要不断阅读和接管这些代码。如果代码能尽可能容易理解,这些程序员的工作将更容易、更有效。

那么,如果你是一名初级开发人员,从其他开发人员那里接管代码库,你更愿意听到以下消息吗?

  1. “这是我们的旋钮调节器,它是由旋钮调节器制成的 2 由一个轮子和一条皮带组成
  2. “这是一个固定连杆的插件,这是一个连杆,你必须把它的末端插入另一个插件的孔……”

上一篇 深入MVC模式和三层架构
下一篇 Android Studio插件GenerateFindViewById

文章素材均来源于网络,如有侵权,请联系管理员删除。

标签: Java教程Java基础Java编程技巧面试题Java面试题