当前位置: 首页 > news >正文

好/坏代码实例解读:图文并茂说明

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

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

我似乎记得这是在某种主流出版物上。我猜,这篇文章的主题是“当心坏代码,它会杀死你,哦,但等等,它是看不见的,所以没关系!对于读者来说,这无疑是一个令人欣慰的信息,你不觉得吗?回想起来,这篇文章似乎只是试图耸人听闻,在越来越多的飞机、火车和自动驾驶汽车中潜伏着“坏代码”的存在,从而增加读者群。

那么,作为外行,什么是“Bad Code”呢?

作为一个每天花大约 5 小时编写、审查和重构代码(意思是,以更简洁和可用的方式重写)的人,我知道什么是代码(以及什么是坏代码,相信你我!我有时会忽视这样一个事实,即许多人对代码是什么没有概念。

对于这些人,我对“您是一名程序员,您是做什么的”这个问题提供以下答案:

我建造了小门口的微小组件,它们以各种方式和各种配置打开和关闭。当门口打开时,电子可以通过,当门口关闭时,电子被阻挡。由于门口太小,无法手工建造,我必须用我的电脑来建造它们。根据我在电脑中输入的单词,它会代表我构建各种类型的小门。

毫无疑问,正如上面的答案所说,软件开发人员 / 编码人员 / 程序员实际上是在构建具有物理存在的东西,但太小而看不到(但是,可以将其设想为组件或一组小门口)。这本身就已经够疯狂了,但如果你至少能想象到这一点,你已经对 “编码” 有了概念上的理解,那么恭喜你!但回到本节标题中的问题 — 什么是“代码”?

按照我们的小门口的微小集合的类比,我会说糟糕的代码意味着你有太多的门口,以不必要的重复复杂的方式排列。

由于这很难用门口的类比来形象化或进一步解释,因此在这一点上,我想提供另一个类比,如下所述。

为我制作一个旋钮转动器!

假设我们想构建一个旋钮转动器。一个可以旋转的旋钮,它反过来会旋转远程位置的另一个旋钮。产品要求如下所示。转动一个旋钮,一段距离外的另一个旋钮也会转动:

dce8989dbed017b9f3f25a1f091fa776.jpeg

这就是我们需要的系统 — 一个转动另一个旋钮的旋钮。

Bad Code 只考虑手头的问题,并提出最简单的解决方案 — 一个旋钮和一个旋钮转动器,由半柔性杆连接。Bad Code 在这个早期阶段赢得了 Occam’s razor 奖。好的代码乍一看似乎有点矫枉过正,它使用了一条橡胶带和 2 个轮子。

8a9426174f51273bdb17b0288e2b1e38.jpeg

要求变更!旋钮将被重新定位!

正如开发周期中经常发生的那样,在某个时候,客户需求会发生变化。在我们这里的类比中,客户现在想要一个旋钮转动器,它可以将另一个位于原始旋钮前方和侧面的旋钮旋转,如下所示:

24f22eb08fb47b73710b4a0701c4de7d.jpeg

坏代码需要添加一些 jerry-rigged 组件,使整个系统更加不稳定,容易出现故障。当有新需求时,好的代码只需要稍作调整,只需使用更长的橡胶带即可解决此问题。

dc9f023344919059cd1977842753dd97.jpeg

要求变更!旋钮需要转动得慢一点!

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

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

e4248393da9f73c837f852437f06e240.jpeg

两个插件和一根形状有趣的杆?谁在维护你,坏代码?

类比后记:那又怎样?

如上所示,当需求简单时,好的代码通常看起来有点矫枉过正,但当客户需求发生变化时(就像他们总是这样做一样),那么它就会真正闪耀。换句话说,它可以很好地扩展和变化。另一方面,糟糕的代码看起来很简单,对于简单的问题来说很好,但当系统发生变化或复杂性增加时,它就会成为一场噩梦。

但也许你在想,“嗯,上面概述的两个系统都达到了相同的结果——旋钮转动器在任何一种情况下都能成功工作。

这是真的 — 对于单独编码或业余项目来说很好。上帝知道我已经写了数万行糟糕的代码(就我而言是普通 JS),但没关系,因为我从来不需要维护代码或以任何方式添加代码。代码有效,我部署了它,并且从未回头。

然而,专业编码本质上是一项协作努力,无论您编写什么代码,无论是现在还是将来,其他编码人员无疑都会不断阅读和编辑。如果代码尽可能易于理解,这些编码人员将拥有更轻松、更高效的工作日。

  1. 这是我们的旋钮旋转器,它由 2 个轮子和一条皮带组成”,或者
  2. 这是固定连杆的插件,这是连杆,你必须把它的一端放进另一个插件的一个小孔里……”

作为一名初级开发人员,更愿意听到哪一个?:)

常见问答(FAQ)

1.什么是好代码?

好代码通常指可读性高、逻辑清晰、易于维护和扩展的代码。它遵循编码规范,减少复杂度,使得其他开发者能够轻松理解和修改。

2.什么是坏代码?

坏代码往往结构混乱、命名不清晰、不易维护,并且缺乏注释或逻辑不直观。这类代码可能完成功能,但后续修改或调试困难,增加开发成本。

3.好代码与坏代码的区别是什么?

好代码通常具备清晰的逻辑结构、简洁的代码量和可读性强的命名,而坏代码则可能包含冗长的代码、不合理的结构或不规范的命名,使代码难以理解和修改。

4.为什么好代码重要?

好代码减少了出错率,提高了开发和维护的效率,使团队成员更容易协作和扩展功能,降低项目长期维护的成本。

5.非程序员如何判断代码的好坏?

非程序员可以从代码的结构、注释和命名来看。一段代码如果结构清晰、注释明确且变量命名合理,则往往是好代码;反之则可能是坏代码。


http://www.mrgr.cn/news/59304.html

相关文章:

  • 【HarmonyOS NEXT】每次升级二方库或三方库,工程都会报错
  • 程序员数学:用Python学透线性代数和微积分 中文目录
  • Docker | docker配置阿里云镜像实现加速
  • 漏洞挖掘 | 基于mssql数据库的sql注入
  • 日常笔记记录
  • Leetcode7:整数翻转
  • 在MySQL中存储IP地址的最佳实践
  • C#判断带数字的字符串数组连续性的两种方式
  • 【JavaSE】认识String类,了解,进阶到熟练掌握
  • 使用 Resilience4j 实现重试
  • PHP模拟多继承的方式:traits
  • 数据结构 - 散列表,初探
  • Java篇图书管理系统
  • 深度图像和距离图像
  • 2024年如何学好JS
  • 多层感知机的从零实现与softmax的从零实现(真·0000零基础)
  • 2025前端面试-内存泄露-001
  • 软件模拟 SPI 时序,驱动OLED屏幕
  • 基于Python+Django的气象数据分析与可视化系统
  • 前端工程化面试题
  • asp.net core 入口 验证token,但有的接口要跳过验证
  • 尚硅谷-react教程-求和案例-@redux-devtools/extension 开发者工具使用-笔记
  • 工程项目管理软件怎么选?推荐7款实用工具
  • 越权漏洞概述
  • MinIO 完整使用案例
  • class 36 二叉树高频题目 - 上 (不含有树形dp)