我曾经在某处读到过一句话,基本上有以下内容:
“现代世界许多人的生活都依赖于软件,例如控制大型商用客机飞行系统的软件,但软件开发领域大多不受监管。任何人都可以成为自学成才的软件开发人员,并且没有像其他高风险职业(例如摩天大楼或神经外科)那样的认证或严格要求。这是一个危险的不受监管的领域,因为根据具体情况,几行不良代码就可能导致生命损失。
我似乎记得这是在某种主流出版物上。我猜,这篇文章的主题是“当心坏代码,它会杀死你,哦,但等等,它是看不见的,所以没关系!对于读者来说,这无疑是一个令人欣慰的信息,你不觉得吗?回想起来,这篇文章似乎只是试图耸人听闻,在越来越多的飞机、火车和自动驾驶汽车中潜伏着“坏代码”的存在,从而增加读者群。
那么,作为外行,什么是“Bad Code”呢?
作为一个每天花大约 5 小时编写、审查和重构代码(意思是,以更简洁和可用的方式重写)的人,我知道什么是代码(以及什么是坏代码,相信你我!我有时会忽视这样一个事实,即许多人对代码是什么没有概念。
对于这些人,我对“您是一名程序员,您是做什么的”这个问题提供以下答案:
“我建造了小门口的微小组件,它们以各种方式和各种配置打开和关闭。当门口打开时,电子可以通过,当门口关闭时,电子被阻挡。由于门口太小,无法手工建造,我必须用我的电脑来建造它们。根据我在电脑中输入的单词,它会代表我构建各种类型的小门。
毫无疑问,正如上面的答案所说,软件开发人员 / 编码人员 / 程序员实际上是在构建具有物理存在的东西,但太小而看不到(但是,可以将其设想为组件或一组小门口)。这本身就已经够疯狂了,但如果你至少能想象到这一点,你已经对 “编码” 有了概念上的理解,那么恭喜你!但回到本节标题中的问题 — 什么是“坏代码”?
按照我们的小门口的微小集合的类比,我会说糟糕的代码意味着你有太多的门口,以不必要的重复或复杂的方式排列。
由于这很难用门口的类比来形象化或进一步解释,因此在这一点上,我想提供另一个类比,如下所述。
为我制作一个旋钮转动器!
假设我们想构建一个旋钮转动器。一个可以旋转的旋钮,它反过来会旋转远程位置的另一个旋钮。产品要求如下所示。转动一个旋钮,一段距离外的另一个旋钮也会转动:
这就是我们需要的系统 — 一个转动另一个旋钮的旋钮。
Bad Code 只考虑手头的问题,并提出最简单的解决方案 — 一个旋钮和一个旋钮转动器,由半柔性杆连接。Bad Code 在这个早期阶段赢得了 Occam’s razor 奖。好的代码乍一看似乎有点矫枉过正,它使用了一条橡胶带和 2 个轮子。
要求变更!旋钮将被重新定位!
正如开发周期中经常发生的那样,在某个时候,客户需求会发生变化。在我们这里的类比中,客户现在想要一个旋钮转动器,它可以将另一个位于原始旋钮前方和侧面的旋钮旋转,如下所示:
坏代码需要添加一些 jerry-rigged 组件,使整个系统更加不稳定,容易出现故障。当有新需求时,好的代码只需要稍作调整,只需使用更长的橡胶带即可解决此问题。
要求变更!旋钮需要转动得慢一点!
最后,我们的客户决定他们希望旋钮以不同的速率转动。小转动输入旋钮应导致连接的旋钮大转动。
鉴于这一新要求,不良代码需要向系统添加更多组件,使其更加复杂。另一方面,好的代码也只需要稍微调整一下,在连接的旋钮侧使用一个更大的轮子:
两个插件和一根形状有趣的杆?谁在维护你,坏代码?
类比后记:那又怎样?
如上所示,当需求简单时,好的代码通常看起来有点矫枉过正,但当客户需求发生变化时(就像他们总是这样做一样),那么它就会真正闪耀。换句话说,它可以很好地扩展和变化。另一方面,糟糕的代码看起来很简单,对于简单的问题来说很好,但当系统发生变化或复杂性增加时,它就会成为一场噩梦。
但也许你在想,“嗯,上面概述的两个系统都达到了相同的结果——旋钮转动器在任何一种情况下都能成功工作。
这是真的 — 对于单独编码或业余项目来说很好。上帝知道我已经写了数万行糟糕的代码(就我而言是普通 JS),但没关系,因为我从来不需要维护代码或以任何方式添加代码。代码有效,我部署了它,并且从未回头。
然而,专业编码本质上是一项协作努力,无论您编写什么代码,无论是现在还是将来,其他编码人员无疑都会不断阅读和编辑。如果代码尽可能易于理解,这些编码人员将拥有更轻松、更高效的工作日。
- “这是我们的旋钮旋转器,它由 2 个轮子和一条皮带组成”,或者
- “这是固定连杆的插件,这是连杆,你必须把它的一端放进另一个插件的一个小孔里……”
作为一名初级开发人员,您更愿意听到哪一个?:)
常见问答(FAQ)
1.什么是好代码?
好代码通常指可读性高、逻辑清晰、易于维护和扩展的代码。它遵循编码规范,减少复杂度,使得其他开发者能够轻松理解和修改。
2.什么是坏代码?
坏代码往往结构混乱、命名不清晰、不易维护,并且缺乏注释或逻辑不直观。这类代码可能完成功能,但后续修改或调试困难,增加开发成本。
3.好代码与坏代码的区别是什么?
好代码通常具备清晰的逻辑结构、简洁的代码量和可读性强的命名,而坏代码则可能包含冗长的代码、不合理的结构或不规范的命名,使代码难以理解和修改。
4.为什么好代码重要?
好代码减少了出错率,提高了开发和维护的效率,使团队成员更容易协作和扩展功能,降低项目长期维护的成本。
5.非程序员如何判断代码的好坏?
非程序员可以从代码的结构、注释和命名来看。一段代码如果结构清晰、注释明确且变量命名合理,则往往是好代码;反之则可能是坏代码。
文章标题:好代码与坏代码的区别:非程序员也能懂的图解,发布者:小编,转载请注明出处:https://worktile.com/kb/p/3485296