人们疯狂编写错误代码的3个原因

【无人机基站】基于K-mean算法实现无人机基站部署附matlab代码 阅读详情

在优锐课的程序员学习方法论理, 讨论了程序员为什么在各处都看到错误的代码? 发生这种情况的原因有几个。一起来看看
在过去的几天里,我一直在思考为什么我们作为一个行业一直一直在生产不良代码。
能够构建高质量代码的系统的开发人员数量很少,而且彼此之间就相去甚远,正如老套话所说,每个人就像大海捞针一样。

1.明显原因

我能想到的最明显的原因是,有好的程序员和不太好的程序员,技能水平较高的人和技能水平较低的人,对手工艺感兴趣的人以及其他不太关心的人 比薪水还要多。
所以,我将不再深入研究。
在地面上还会有更多问题吗? 是否存在导致所有错误代码的根本问题? 我不得不更深入地发现

2.低期望

首先,众所周知,在大学中通过自学或书籍学习编程的知识永远无法准确反映现实工作的需求。
因此,始终假定初学者总是要学习如何在工作中产生良好的代码。 可以相信,真正的编程课程只有大量的经验积累。 更重要的是,初学者甚至会期望使用错误的代码!
当初学者被期望产生质量低下的代码时,通常会得到这样的结果!

尽管上述推理中的一部分是正确的,但出于多种原因,笔者认为我不想全部接受,主要是以下三个方面:

1.期望从职业生涯开始的那些人获得更低的标准,我们说质量并不是一个重要因素。 低进入壁垒的直接结果是大量涌入了低质量的开发人员,这导致了第二点……
2.通过强迫他们与大多数低质量的开发人员一起工作,我们使那些关心工艺的人和以工作质量为荣的人感到痛苦。
3.以上两个因素的结合导致了我们今天的处境,每个人都认为他们可以编写代码,而专业开发人员被视为商品资源。

我们需要更多的初学者。 如果他说他不能以最高标准进行手术,或者飞行员说他如果没有坠机着陆就不能真正驾驶飞机,谁会聘请医生? 根本不可接受。 那么,为什么在软件行业可以接受较低质量的软件呢?
那么,低质量开发人员的根本原因是什么?

3.编程书籍

几天前,我正在看一些旧书,偶然发现了几本关于Java的书-一本是供初学者学习Java的书,另一本是针对SCJP认证的书。 出于在下一分钟左右显而易见的原因,我不想命名这些书。
不幸的是,初学者所参考的书不经意间准确地描述了代码应该是多么糟糕。

大多数关于任何编程语言的初学者书籍都充满了不好的代码。 罗伯特·马丁(Robert Martin)等人在诸如清洁代码''和实用编程’'之类的书中涵盖的各种错误代码已在大多数初学者中广泛使用。
您会发现错误代码的一些示例是…

命名错误的类,变量和方法
i,ii,j,k表示循环; clazz,类名称为SampleChapter1; 等等

无需分离问题
三页长的main()方法可完成所有工作,而不是将职责分为不同的方法。

不良编码做法
没有良好的代码编码实践,例如包括验证或异常处理。 相反,它们通常使用一个大的通用try()… catch(Exception e)块来包含类中的所有代码。
另一个是慷慨地使用if-else,switch,goto语句等。

捷径
这些书还需要摆脱“快速修复”的编程风格。 例如,找到带有10个参数的方法并不少见。
需要进行两种类型的计算吗? 没问题,传递一个布尔参数并添加一个if-else构造。 需要添加新功能吗? 到那里,将更多代码添加到两页长的方法中! 这些只是最受欢迎的两个。
学习编程的一种好方法是按该顺序掌握语言的语法,有效开发所需的工具以及组成代码的组件和模块的设计。
不幸的是,大多数书籍都停留在语法上,甚至没有简单地涉及工具和设计改进的话题。 初学者总是比作者打算教的更多。 这些书的目的和目的是教授编程语言语法,但读者也总是会学习编码风格和方法论。
当人们学习编码时,重要的是要教给他们写的代码是供其他人阅读和理解的,而不仅仅是编译器。

希望,如果你们中的一些人已经阅读了这篇文章并且将来会成为作者,请记住在书中写好代码! 我本人曾在我的许多帖子中使用临时代码感到内。 学习产生高质量的代码不仅应仅限于专家级书籍,还应作为编程书籍中不可或缺的一部分!

当初学者的书中包含质量较差的代码中最差的一个时,我们如何期望从中学习的人产生高质量的代码?

喜欢这篇文章的可以点个赞,欢迎大家留言评论,记得关注我,每天持续更新技术干货、职场趣事、海量面试资料等等
如果你对java技术很感兴趣也可以加入我的java学习群 V–(ddmsiqi)来交流学习,里面都是同行,验证【优快云2】有资源共享。
不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代
在这里插入图片描述

黑猫带你学eMMC协议第11篇:eMMC擦除详解(erase/trim/discard/sanitize/secure erase/secure trim...) erase命令单位是擦除组,那么一个擦出组包含多个写块,不同写块有不同信息,主机擦除之前,必须进行确定好这些写块中的信息没有用了。所以通常erase用来擦除整个设备或分区。erase完成后,将erase的区域都要么是全0,要么是全1。那么到底是0还是1呢,根据不同的工艺有所不同,但是别担心,在ecsd[181]中会有说明到底是1还是0。erase命令的作用就是简单的将映射地址范围移动到未映射的地址范围。 阅读详情

相关推荐

从FinFET到NanoSheet:一文看懂TSMC制程技术的架构革命与性能飞跃

本文深入解析了TSMC从FinFET到NanoSheet的制程技术架构革命。FinFET通过三维立体结构解决了短沟道效应,而NanoSheet采用环绕栅极设计,实现了更强的静电控制与设计灵活性,结合EUV光刻技术,共同推动了芯片性能与能效的飞跃,为下一代AI与高性能计算奠定基石。

i3j4k5的博客 288

使用异常还是错误码?

#异常使用和处理建议 ###使用异常代替错误码 这曾经是个社区争论不休的话题,多数人是选择异常替代错误码的。反对者中,有人认为不应该使用异常去控制程序流程,也有些人认为只有"数据库连不上"这种系统异常才算异常,还有些人认为异常会有额外的性能开销… 使用异常代替错误码,可以使得代码更清晰,可读性更好,更符合面向对象。况且有些方法压根就是void的无返回值的。至于性能开销这个通常可以忽略。 当然,这个...

丁码农 4683

通达信股本变迁文件(gbbq)解密方法

近年来A股市场跌宕起伏真特么精彩,本人愚钝,被整爆仓,损失惨重 痛定思痛,认为交易这种对纪律要求极高,且必须完全排除情绪影响的勾当,还是应该交给程序来干 数据哪里来呢?当然是拿来主义。。。问券商的交易软件要呗 到处查资料,得知通达信的权息文件数据齐全,不仅含有除权除息数据,还含有限售解禁、增发、可转债上市等股本变化数据 ——这对于某些对成交量变化敏感的交易模型是非常重要的

不甘碌碌老,结庐铸宝刀 2万+

代码报错原因和处理方法

代码错误的原因和调试方法

a0312dy的博客 1万+

大疆OcuSync vs 传统2.4GHz:深度拆解无人机图传射频模块的硬件差异

本文深度对比了大疆OcuSync与传统2.4GHz无人机图传射频模块的硬件差异,涵盖芯片组、天线系统、PCB设计、散热方案及生产测试等核心环节。重点解析OcuSync的全定制SoC芯片、智能MIMO天线阵列及精密PCB布局如何实现革命性性能提升,为无人机图传技术发展提供专业参考。

u5v6w7的博客 806

视觉Transformer实战 | Transformer详解与实现

本文系统介绍了 Transformer 架构的核心原理与实现。相比传统 RNN 和 CNN,Transformer 凭借自注意力机制有效捕捉序列中的长距离依赖关系,支持并行训练,显著提升效率。其核心创新在于通过查询、键、值向量计算注意力权重,理解单词间的语义关联。架构包含编码器-解码器结构:编码器通过多头自注意力和前馈网络提取输入特征;解码器利用掩码自注意力和交叉注意力生成输出。本文使用 PyTorch 实现了缩放点积注意力、位置编码、层归一化等关键模块,并构建了完整的 Transformer 模型。

盼小辉丶的博客 4万+

写代码没几天,遇到一直报错,该怎么办

大家好,在之前我们已经详细讲过了在刚开始学习Python面对众多IDE该如何选择,今天我们接着聊聊在新手期最头疼的问题,遇到代码报错该如何解决,希望能帮到正在学习Python的你。 正确认识报错 首先你要明白,在新手期不论你是配置环境还是调试代码出现的错误,不论你是直接复制粘贴执行别人代码报错还是按照别人的教程一步一步操作突然报错,都是很常见的情况,而这些问题: 一定有很多人碰到过 一定有很多人在网络上提问 一定有人分享解决方案 所以在遇到错误时不要不知所措,不要立刻打开聊天框咨询别人,而是需要冷静下来相信

weixin_47228150的博客 2312

图像处理:张量分解在图像处理领域的应用

随着计算机视觉和图像处理技术的快速发展,图像数据呈现出高维、多模态、海量等特点。传统的矩阵分解方法已经无法有效处理这些复杂的图像数据。张量分解作为一种高阶矩阵分解方法,可以很好地捕捉图像数据的高维结构信息,在图像处理领域展现出巨大的应用前景。本节介绍几种常用的张量分解算法,包括高阶SVD(HOSVD)、Tucker-ALS、CP-ALS等。这些算法的核心思想是通过迭代优化的方式,交替更新张量分解的因子矩阵,直到收敛为止。综上所述,本文系统地介绍了张量分解技术在图像处理领域的应用。

AI天才研究院 7103

【提问】请问一下为什么,我自己写的代码运行输入的时候提示输入错误,而使用别人的就可以,代码都是一样的

麻烦大佬都看一下,在线等,急

weixin_45758709的博客 368

STM32实战开发(128):智能位移检测 - 使用STM32实现位移检测

STM32作为一款功能强大的微控制器,由于其出色的处理能力、丰富的外设接口和低功耗特点,成为实现智能位移检测系统的理想选择。未来,可以通过结合更多传感器、多种数据处理算法以及云平台技术,进一步提升系统的智能化水平,优化位移测量的精度和稳定性。本篇博客将介绍如何使用STM32微控制器实现智能位移检测系统,涉及硬件设计、传感器选择、软件开发等多个方面,提供详细的设计步骤,并给出完整的代码示例,帮助开发者快速搭建智能位移检测系统。蜂鸣器连接到STM32的GPIO端口,当位移超过设定的阈值时,蜂鸣器发出警报。

2201_76125393的博客 900

超声波传感器(CHx01) 学习笔记 Ⅲ - I2C读写操作

CH-x01 通过 2 线 I2C 协议与主机处理器通信

nicole088的专栏 1737

为什么你的代码总有 bug?

很多 Java 初学者在开始编程时会出现一些问题,这些问题并不是指某个特定领域的问题,也不是指对某个业务不熟悉而导致的问题,而是对基础知识不够熟悉导致的问题。而就是这些问题让我们编写了一些不够健壮的代码。 这篇文章会列举几种编程初学者常常出现的一些问题,我相信这些问题多多少少也曾困扰着现在或曾经的你。如果觉得文章不错,不妨点赞分享,让更多人跳过这些开发中的坑。 随处可见的 Null 值 我见过很多的代码会把 Null 值作为返回值,当你预期是一个字符串时,意外得到了一个 Null 值;当你预期得到一个 Li

Q526859236的博客 1332

2万字长文:海豚调度器(DolphinScheduler)面试题深入了解

DAG图(有向无环图)是海豚调度器中表示工作流任务依赖关系的一种方式。在DolphinScheduler中,每个任务是一个节点,任务之间的依赖关系通过有向边连接这些节点来表示。无环:保证了工作流的执行顺序是确定的,避免了无限循环的问题。有向:箭头指示了任务的执行方向,即上一个任务的输出可以作为下一个任务的输入。依赖表示:通过图形化界面,用户可以通过拖拽连接线来定义任务之间的先后顺序和依赖关系。并行处理:DAG图可以表示出任务的并行关系,允许多个任务在没有直接依赖关系的情况下同时执行。条件分支。

大模型大数据攻城狮的专栏 1329

初赛集训最绕之题----逃亡,再来看看人工智能与我的大作骗分与枚举

我瞎编的,考试时想骗就骗不想骗就不骗,骗分题很少,能不骗就不骗,拿到全AK。

danshengdan的博客 598

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

谷歌云全球宕机8小时:韧性系统还是脆性文明?

谷歌云6·12全球宕机8小时,空指针击溃配额守门员Service Control,音乐金融AI悉数瘫痪;拆解漏洞链,奉上多云容灾指南

qq_40286307的博客 1701

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

卓越的用户体验需要智能内容

这篇文章指出静态文档已无法满足现代用户的需求,而智能内容则是构建卓越用户体验的关键。文章从智能内容的定义、优势和实际应用等方面进行了详细阐述,并强调了企业应积极拥抱智能内容,以提升客户满意度、降低成本并创造新的收入来源。

大龙谈智能内容 939

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

codevs 2218 补丁 vs 错误 (最短路)

*PS:我为什么要打二进制啊QAQ go to the problem 题目描述 Description 错误就是人们所说的Bug。用户在使用软件时总是希望其错误越少越好,最好是没有错误的。但是推出一个没有错误的软件几乎不可能,所以很多软件公司都在疯狂地发放补丁(有时这种补丁甚至是收费的)。T公司就是其中之一。上个月,T公司推出了一个新的字处理软件,随后发放了一批补丁。最近T公司发现其发放的补丁有致命的问

Loi_Mapleleaf的小池 394

2018-2019赛季多校联合新生训练赛第四场题解与补题(中石油)

这一场比赛我是在宿舍里打的,环境非常的恶劣(嘘) 因为舍友一直在说话啥的 不过这也是没办法的事,毕竟是周末嘛~ 上来第一题就给我吓破胆了 ,吓得我拿了一个本子在那个地方疯狂计算,把每种情况都写出来以后才敢开始coding 后来提交发现已经好多人a了这道题,挺不应该的 还有一个要注意的是,千万不要上来就看最后一题!!因为我以前觉得最后一题肯定是水题,很多次比赛都是这样的,但是这次卡了很长时间!所以...

一只小蒟蒻的博客 2923

【Linux 】十八.进程间通信篇一《Linux 进程间通信完全指南:从管道原理到匿名管道与命名管道实战》

⼀个进程需要将它的数据发送给另⼀个进程资源共享:多个进程之间共享同样的资源。通知事件:⼀个进程需要向另⼀个或⼀组进程发送消息,通知它(它们)发⽣了某种事件(如进程终⽌时要通知⽗进程进程控制:有些进程希望完全控制另⼀个进程的执⾏(如Debug进程),此时控制进程希望能够拦截另⼀个进程的所有陷⼊和异常,并能够及时知道它的状态改变。进行进程间通信的原因是进程的独立性是操作系统为了安全与稳定而设计的基本特性,但这也导致了进程之间默认无法直接交互。

2501_93351213的博客 859

地球Online逃生指南(下卷)

本书是一部系统探讨人类意识困境的哲学著作。全书通过七卷本的结构,依次解构人类认知牢笼、自我本质、世界实相、痛苦根源,最终指向自由、慈悲与终极实相。第一卷揭示大脑建构的认知幻象;第二卷剖析"自我"的神经机制;第三卷以系统论阐释世界空性;第四卷建立痛苦的数学模型;第五卷提出觉知训练体系;第六卷论证利他主义的科学基础;第七卷超越逻辑束缚直指存在本质。著作融合现代神经科学、量子物理、复杂性理论与东方哲学,构建了一个从认识到解脱的完整认知框架,最终指向无条件的临在与宇宙层面的觉知。

weixin_45747731的博客 339

“编程能力差,90%输在了数学上!”CTO:多数程序员都是瞎努力!

点击上方“Python大本营”,选择“置顶公众号” Python大本营 IT人的职业提升平台 01从未得到过重视的问题一流程序员学数学,二流程序员学算法,低端看高端就是黑魔法。可能有人...

Python大本营的博客 1158

代码错误原因总结

代码错误原因总结 代码奔溃的原因总结: 使用没有初始化的变量 数组越界 指针指向为空,但使用了它的内容 使用的除法,但没有判断除数是否为0 调试出现错误: 应该采用debug而不是release 没有配置属性中的调试内容 属性中的cfg文件名与实际不同 结果数据一样: cfg中QP设置成了同样的值 编译出错: 缺少类型说明符假定为int 两个头文件相互引用 Linux运行错误: double free or corruption (!prev) Aborted (core dumped) new出来的

m0_37971774的博客 3177

【回眸】 C语言常见报错及原因

【回眸】 C语言常见报错及原因 代码和报错如上 报错1:error:'xxx’redeclared as different kind of symbol a重声明成一个不一样的类型 此时 说明a被重声明了,说明这里a被声明了两次, 那么问题在哪里呢?实际上是因为代码的大括号里出现了两次对a的声明 报错2:array index XX is past the end of the array 代码和报错如上 如果遇到这个,具体是啥原因导致的呢? 发现这里定义了a[10],但实际上我们的数组最大只有a

啤酒鸭的物联网开发记录博客 4635

新手敲代码经常犯的低级错误(持续更新ing)

Hello,大家好. 本文章主要写一写敲代码时候常见的低级错误; 此文章不断的更新。(添加日常犯的低级错误导致程序运行不出来) 来源:1.别人的错误;2.自己的错误 干货不断!!!!干货不断!!!!干货不断!!!! 干货不断!!!!干货不断!!!!干货不断!!!! 编写高质量代码是这样一个流程:思考、调研、规划、编写、验证、修改 1.换行符根据题意看清; C语言中 \n C++中 <<endl 2.if条件判断语句中“==”之间不能加空格; 3.分清=与==的区别; =赋..

C/C++/Linux/MySQL 2063

写代码时经常出错的点(持续更新)

考虑数据范围不能只看输入的范围和结果的范围,计算过程中的范围也一定要考虑,比如输入n个1e9,但是现在需要求前缀和,那么多个1e9相加一定会爆int,所以就要开long long。 __int64,long long,int型之间的相加不能直接进行,只能同种类型相加。 比如__int64 j和int i。i是不能和j进行加和操作的! 除了返回值是void型的函数以外,其他所有的函数都需要明确写出返回值是什么,如果出现函数返回值不为void但是没有写任何return的情况的话会TLE! ....

weixin_45925735的博客 822
上一篇: 精选干货分享 Java线程教程:使用Java创建线程和多线程
下一篇: 微服务的设计模式(一)
程序员plus
博客等级 码龄8年 41粉丝 151原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值