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

这篇具有很好参考价值的文章主要介绍了什么是好代码/坏代码?给普通人的图解示例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文翻译自国外论坛 medium,原文地址:https://medium.com/@todbotts.triangles/what-is-good-bad-code-an-illustrated-example-for-non-programmers-1222b600a0f0


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

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

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

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

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

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

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

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

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

打造一个旋钮调节器!

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

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

需求变更,旋钮位置变了!

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

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

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

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

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

总结

如上所述,当需求很简单时,好的代码通常看起来有点过头,但当客户需求发生变化时,好的代码就会真正发光发热。换句话说,它能适应未来的规模和变化。另一方面,对于简单的问题来说,坏代码看起来很简单,很棒,但当系统发生变化或复杂性增加时,它就会变成噩梦。

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

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

那么假如说你是初级开发人员,从其他开发人员那里接管代码库,您更愿意听到下面哪个消息?

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

关注公众号【waynblog】每周分享技术干货、开源项目、实战经验、高效开发工具等,您的关注将是我的更新动力!文章来源地址https://www.toymoban.com/news/detail-443975.html

到了这里,关于什么是好代码/坏代码?给普通人的图解示例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 彭涛:普通人如何通过个人 IP变现?

    大家好,我叫彭涛,是涛哥聊Python 公众号主理人,是一名独立开发者,在美丽的成都,欢迎大家来成都找我吃火锅,看大熊猫。 之前给大家分享过如何增长20W 读者,今天给大家说下个人IP 这件事,说下普通人如何通过树立个人IP 赚到自己的副业收入。 个人IP就是个人品牌,

    2024年02月02日
    浏览(38)
  • 元宇宙怎么赚钱?普通人的获利渠道

    今天谈论元宇宙就像谈论90年代的互联网。1991年,世界上第一个网站卫士似乎只是几段包含超链接的文字。它是现代互联网的前身。1993年,第一个搜索引擎上线。三年后,谷歌首次亮相。当时已经有上百万个网站,然后诞生了第一个社交媒体平台WiFi智能手机。互联网以前所

    2024年02月11日
    浏览(45)
  • 普通人是否能从ChatGPT中分一杯羹?

    ChatGPT3.0刚刚推出,最开始的时候,人们只是将ChatGPT看作一个很会聊天的机器人,无论问题多么天马行空,它的答案看上去都有理有据。后来,像打开潘多拉魔盒一样,很多人开始拿它编大纲、撰写文案、编代码、创作剧本、写法律文书、还可以出面试题… 因为ChatGPT的各种能

    2023年04月20日
    浏览(44)
  • 作为普通人,如何入局人工智能?

    前言: 作为普通人,目前面临着人工智能ai带给就业的挑战,那么如果你不幸的正好是对应的替换行业,该如何入局人工智能,抢占回自己的位置呢? 导语: 人工智能是一门涉及计算机科学、数学、统计学、机器学习等多个学科的交叉领域,它可以让计算机模拟人类的智能

    2024年02月13日
    浏览(45)
  • 对话ChatGPT:Prompt是普通人“魔法”吗?

            在ChatGPT、Midjourney、Stable Diffusion等新事物的作用下,不少人或多或少听说过Prompt的概念。         虽然OpenAI掀起的大模型浪潮再度刷新了人们对AI的认知,但现阶段的AI终归还不是强人工智能,大模型里的“知识”存储在一个隐性空间里,需要输给AI正确的指令

    2023年04月19日
    浏览(44)
  • 从本次战疫,作为普通人可以学到的东西

    前人不忘,后事之师。 从本次疫情的控制,可以学到什么? 早发现,早隔离,早识别,早就诊。 定位传染源,传播途径,传播方法,确定潜伏期,检测方法,确认病人症状。 阻断传播途径: 疑似和确诊分开。 轻症和重症分开。 区域间隔离。 动员能力 医疗物资,生产,运

    2024年02月19日
    浏览(36)
  • 人工智能会给普通人带来哪些改变

    最近人工智能太火了,很多人都听说了,尤其是大语言模型。可以让我们像和真人聊天一样,与AI对话,根据你所问的问题,AI可能像一个老师,像一个老人,像一个智者回答你的几乎所有问题。 这也把有些人吓坏了。 有人说,人工智能就像曾经的原宇宙一样的,就一阵热度

    2024年02月12日
    浏览(42)
  • Premint工具,作为普通人我们需要了解哪些内容?

    如今加密大环境冷静期,大多数项目自身也陷入启动资金少,宣发困难,新员增量和社区联动无法达到启动规模,圈内名人和打卡社团的高价广告费让小项目方成为第一波韭菜,项目的白名单公售信息无法传递于圈子,于是一个喜闻乐见的好工具Premint及时出现并帮助大量的

    2024年01月17日
    浏览(42)
  • VR全景对普通人的生活有哪些好处?

    许多普通人对VR全景还全然没有概念,这是因为VR全景虽然一直在快速发展,但目前为止也不过几年而已,但这发展的几年同样为我们普通人的生活带来了切实的改变和便利。VR全景技术为人们带来了沉浸感和真实感的体验,让我们感受到迥异于传统方式的新鲜感和刺激感,无

    2024年02月03日
    浏览(48)
  • 普通人如何快速进入区块链(Web3.0)行业?

        区块链是一个开放式账本,任何加入共识的参与者都可以执行该账本的安全和分布式。如果您了解Torrent,那是一个去中心化数据库的示例,其结构与区块链相同,但它没有可以保护其上任何交易的加密功能。区块链本质上是一个分散的数据库,由对等网络中的计算机管理

    2024年02月06日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包