开发者为什么需要“不良代码”

news2024/9/25 20:39:21

在这里插入图片描述
“从未犯过错误的人也从未有过新发现。” — 塞缪尔·斯迈尔斯

想象一下场景:苏格兰,1928年。可能在下雨,一位科学家不小心让他的培养皿被霉菌污染了,他并不知道这个错误最终将拯救数百万人的生命,这项伟大的发现就是青霉素。这位科学家的名字就是亚历山大·弗莱明,他一个小小的技术失误改变了世界,让人们的生活变得更加美好。

在当下,软件开发领域存在着一种错误的观念,是什么呢?

与弗莱明的屡次失败而发现青霉素的方式类似,在实际开发中,粗糙的代码可以带来意想不到的结果。

在这篇博客文章中,我们将分析“好代码”与“不良代码”的概念,以及为什么开发者们不应该一开始就害怕“不良代码”。

为什么“不良”代码在某种程度上来说是有益的。

让我们明确一件事,本篇博文中不存在“代码质量歧视链”,但开发者们都清楚,市面上的确存在一些不良代码。

这没关系,真正有问题的点是我们对于“不良代码”这个术语的误解。

“好代码”和“不良代码”的概念在过去十年左右已经悄悄进入开发领域,这已经成为一个相当复杂的问题。不是因为我们分辨不出区别,而是因为我们经常过分强调从一开始就写出完美的代码,以至于我们忘记了“初稿”存在的合理性。你可以保证世界上伟大的艺术家、作家和工程师,例如达芬奇、莎士比亚和特斯拉等在没有草图之前就可以创作出伟大的作品吗?如果不能,为什么在编码时开发者们普遍忌讳“初稿”呢?

那我们将如何重新思考代码?从我们的代码词汇中去除“不良”这个词吗?

这很简单:“不良”代码是编写好代码的重要部分。

“但这没有道理!”有些开发者可能要哭了。我们可以这样说,当一个开发者开始编写一个程序、应用程序,甚至一个随机的编码项目的想法时,不应该先考虑代码质量,而是应该关注想法的质量。

这是什么意思呢,这种方式可以让开发者摆脱“创造完美”的压力,不要太关心最终结果。把东西写在纸上,写出一些可行并且有良好基础的架构,将帮助你实现‘好’代码的目标。

毕竟,没有架构你不能创造一个完整的项目。

相关:通过 GitHub Actions 增强 CI 中的代码质量

我们还要坚持认为初代版本的代码是“不良”代码吗?

我们所说的“不良”代码实际上意味着什么?是代码跑不通吗?充满 bug 吗?或者它只是不符合我们的标准?

让我们重新表述原始问题:对你来说,“不良”代码意味着什么?

‘不良’代码对每个开发者来说意味着不同的事情。说实话,这是一个模糊的术语,可能意味着多种不同的事情。对于开发者来说,它只是彻头彻尾的懒惰,一个单词的答案,伪装成不存在的、陈旧的、无味的反馈。

给代码贴上“不良”标签实际上可能弊大于利。他使得开发者们在写代码的时候、在进行开发工作时候畏手畏脚,甚至不惜一切代价避免“不良”的标签。所以,我们应该从整个行业的视角作出改变,不再使用“不良代码”这个术语。

毕竟,即使是“不良代码”仍然可以起到作用。“不良代码”真的会造成不良结果吗?

事实上,让我们重新思考这个术语,并创造一些更有生产力的概念,一些更有可能提高开发者信心、生产力以及开发速度的概念。

相关:如何提高 C++ 代码质量

我们的目标是编写可用的软件,逐步提高代码质量,从初稿进化成为好的代码。

不要误解。我们并不是说开发者应该变得自满,随意输出低质量副本,然后满不在乎地耸耸肩就离开。从应用程序速度、安全性到维护方面等诸多层面上讲编写好代码至关重要,过分强调‘不良’代码将使最终编写好代码变得更加困难。

这篇博文能提供给开发者最大的启发是:我们不应该害怕输出‘不良’代码。只要我们明白它只是一个起点,开始就是成功的一半。

对于那些正在审查我们团队代码的人,我们需要找到更科学合理的代码评价方法,而不是只,说一句“这的确很糟糕”。更加具体反馈可以使开发者从持续改进的代码中获得更好的结果。这是一刀切的否定所达不到的效果。

点击了解 Incredibuild 加速 C/C++ 构建编译的解决方案,并获取试用 License!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1700888.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

了解Hive 工作原理:Hive 是如何工作的?

一、概念 1、Hive Apache Hive 是一个分布式的容错数据仓库系统,可实现大规模分析和便于使用 SQL 读取、写入和管理驻留在分布式存储中的PB级数据。 Hive是建立在Hadoop之上的数据仓库框架,它提供了一种类SQL的查询语言—HiveQL,使得熟悉S…

kettle 读取记事本文件给java组件处理

kettle9.4 用到两个组件 文本文件输入 文件内容如下 文本文件输入---文件 文本文件输入---内容 注意事项:分隔符这里,我一直没注意,导致不管怎么读数据都读不到;可以用换行符,可以用其他的,视情况而定&…

[idea/git] 如何把多模块项目提交到一个仓库

一、问题 我使用idea创建项目,依次创建module进行开发,开发完毕之后,在github上创建仓库,配置后发现,在idea里点击提交时,每个模块各自记录commit,并且每个模块都需要配置origin地址。 二、解…

【数据结构】二叉树和堆

文章目录 一、 什么是二叉树二、 二叉树的存储结构顺序存储视图 三、 堆堆的结构及概念大堆和小堆 四、 建堆五、 堆排序六、 topk问题 一、 什么是二叉树 二叉树,作为一种重要的数据结构,由节点组成,每个节点可以有两个子节点,通…

【UE5.1 角色练习】07-AOE技能

目录 效果 步骤 一、准备技能动画 二、准备粒子特效 三、技能蓝图 四、相机震动 前言 在上一篇(【UE5.1 角色练习】06-角色发射火球-part2)基础上继续实现角色释放AOE技能的功能。 效果 步骤 一、准备技能动画 1. 在项目设置中添加一个操作映…

Compose Multiplatform 1.6.10 发布,解释一些小问题, Jake 大佬的 Hack

虽然一直比较关注跨平台开发,但其实我很少写 Compose Multiplatform 的内容,因为关于 Compose Multiplatform 的使用,其实我并没在实际生产环境上发布过,但是这个版本确实值得一提,因为该版本包含: iOS Bet…

Vue基础(数据绑定、export使用)

1、简介 在使用vue开发的过程中,经常会遇到一些容易混淆的问题,因此,在本文中进行汇总操作,只有通过不断总结学习,才能更好掌握vue的使用(每天进步一点)。 2、数据绑定 在js中定义数据&#xf…

基于深度学习和opencv的车牌识别系统

免费获取方式↓↓↓ 项目介绍028: 基于深度学习和opencv的车牌识别系统 同时利用对图片每一帧图像加入视频分析模块 图片分析模块可以依据界面按钮提示进行相应功能 视频分析模块可以根据按钮提示进行对视频的分析 (视频模块的视频追踪处理时间较长&…

知攻善防应急响应靶机训练-Web2

前言: 本次应急响应靶机采用的是知攻善防实验室的Web-2应急响应靶机 靶机下载地址为: https://pan.quark.cn/s/4b6dffd0c51a 相关账户密码 用户:administrator 密码:Zgsfqq.com 解题过程: 一、攻击者的IP地址(两个)…

1108 String复读机

solution1 分别统计字符String的个数&#xff0c;并按照该顺序输出 #include<iostream> #include<string> #include<map> using namespace std; map<char, int> mp; void handle(char c){if(mp.count(c)){cout << c;mp[c]--;if(mp[c] 0) mp.e…

【软件开发规范篇】前言

作者介绍&#xff1a;本人笔名姑苏老陈&#xff0c;从事JAVA开发工作十多年了&#xff0c;带过大学刚毕业的实习生&#xff0c;也带过技术团队。最近有个朋友的表弟&#xff0c;马上要大学毕业了&#xff0c;想从事JAVA开发工作&#xff0c;但不知道从何处入手。于是&#xff0…

吴恩达2022机器学习专项课程C2W2:2.22 多类 softmax softmax与神经网络 softmax的代码改良 多标签分类

目录 多分类问题1.什么是多分类问题2.多分类问题案例3.二分类与多分类的区别 Softmax1. 什么是Softmax2.逻辑回归预测的计算过程3. Softmax预测的计算过程4.Softmax 回归与逻辑回归的关系5. Softmax的损失函数 softmax与神经网络1.设置Softmax层2.Softmax层的计算3.softmax激活…

全国多地入夏!对抗“高温高湿”约克VRF中央空调有妙招

随着气温飙升,北京、上海、广州、南京、天津、江苏、新疆、内蒙古部分地区等多地进入夏季状态,华北、黄淮等不少地方最高气温都超过了30℃,大街上人们短袖、短裤纷纷上阵,一派夏日炎炎的景象。 炎热夏季不仅高温频频来袭,往往还伴随着降雨带来的潮湿,天气湿热交织容易让人们身…

开发心电疾病分类的深度学习模型并部署运行于ARM虚拟硬件平台(AVH)

目录 一、ARM虚拟硬件平台介绍 二、心电疾病分类模型介绍 三、部署流程 3.1 基于百度云平台订阅虚拟硬件镜像 3.2 安装编译相关组件 3.1 数据加载 3.2 模型转换 方式一&#xff1a; tensorflow模型转换为onnx模型&#xff0c;onnx模型转换为TVM模型 方式二&#xff1…

分子对接 molecular docking

https://www.sciencedirect.com/science/article/pii/S094471132400374X?via%3Dihub GitHub - beikwx/SailVina: SailVina重构增强版 Molecular docking Download the PTPRB protein structure on the PDB database (RCSB PDB: Homepage). Select the high-resolution PTP…

Dubbo生态之sentinel限流

1. 限流算法 我们知道&#xff0c;在分布式架构中&#xff0c;当服务请求量过大时&#xff0c;容易对服务器造成不可预知的压力&#xff0c;因此&#xff0c;我们在客户端请求的时候&#xff0c;进行限流&#xff0c;起到一个保护的作用 常见的限流算法有: 计数器限流&#x…

Mixed-precision计算原理(FP32+FP16)

原文&#xff1a; https://lightning.ai/pages/community/tutorial/accelerating-large-language-models-with-mixed-precision-techniques/ This approach allows for efficient training while maintaining the accuracy and stability of the neural network. In more det…

C++第二十弹---深入理解STL中vector的使用

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】 目录 1、vector的介绍 2、vector的使用 2.1、构造函数和赋值重载 2.1.1、构造函数的介绍 2.1.2、代码演示 2.2、容量操作 2.3、遍历 2.4、增删…

RH850F1KM-S4-100Pin_ R7F7016453AFP MCAL PWM 配置

1、PWM组件包含的子配置项 PwmGeneralPwmDemEventParameterRefsPwmConfigurationOfOptApiServicesPwmChannelConfigSet2、PwmGeneral 2.1、PwmPowerStateConfig 2.1.1、PwmPowerState 该参数的每个实例描述PWM HW支持的不同功率状态。它应该由硬件供应商定义,并由PWMDriver用…

HoneyTrap蜜罐系统实践操作@FreeBSD

HoneyTrap介绍 HoneyTrap是一个可扩展的开源系统&#xff0c;用于运行、监控和管理蜜罐。 HoneyTrap蜜罐系统通过在网络中部署感应节点&#xff0c;实时感知周边网络环境&#xff0c;并将感应节点的日志进行实时存储和可视化分析&#xff0c;从而实现对网络环境中威胁情况的感…