写点什么

每个程序员都曾犯过的经典错误

  • 2020-05-25
  • 本文字数:2300 字

    阅读完需:约 8 分钟

每个程序员都曾犯过的经典错误


人非圣贤,孰能无过。对于犯错,你不用太困扰,因为对开发者而言,犯错太正常不过,并且几乎每天都会发生。软件开发很难,因此错误或多或少总会发生。犯错可以接受。事实上,及时反思和总结错误才能使我们进一步成长。


下面,我会列举和解释一些常见的错误,希望你能从中汲取经验,以便成为一个优秀的开发者。正如 Eleanor Roosevelt 曾经说过:从别人的错误中吸取教训吧。在有生之年,你不可能把所有的错都犯一遍。

1.在错误的分支中提交代码

我们首先提到这个问题是因为,当错误被及时发现并定位时,不会对我们造成重大影响。虽然我们在修复这个问题的时候会浪费一些时间。


在错误的分支中提交代码估计每个人都体验过一次。如果你及时发现这个错误,则可以很轻松的解决问题,及时止损。否则后续在不断进化的错误分支中修改错误会变得十分棘手——在错误的道路上走的越来越远。

2.追求开发速度,忽视代码质量

在职业生涯中,大多数开发者采取过这种只追求需求响应速度而忽略代码质量的工作方式。这种处理问题的方式存在严重缺陷,它会导致项目背上越来越多的技术债。更重要的是,这种只求速度而忽视代码质量的方式还可能会破坏团队的士气。


然而,在某些情况下,这种开发方式带来的影响并不重要,反而这可能是最优的解决方案。比如对于代码生命周期短的开发,这么做没有什么问题。


但是长远来看,当代码需要长期运行时,这种开发习惯造成的后果可能会“后患无穷”。

3.编写过于花哨的代码

这种情况多发生在那些经验较少的开发人员身上,在他们的职业生涯中,他们想用这些花哨的代码打动其他开发者。


不要在编写花里胡哨的代码上浪费太多时间。而是要有目的的编写代码,并让这些代码按照预期工作。这会给你节省大量时间,让你继续做其他有意义的工作,从而给用户带来更多价值。

4.低估工作量

“我可以很轻松的完成这一特性,小菜一碟。”


然而,事实证明这并没有你想象的那么容易。你尝试的第一个解决方案未达到预期的效果。解决该问题的另一种方法花费了更多时间。


低估工作量是一个经常发生的典型错误。尤其是当团队使用诸如 Scrum 之类的敏捷方法时,你会发现这种错误经常发生。


确保你在预估工时时,除了考虑到开发时间,还要额外留一些时间做其他事情,比如测试。

5.认为你的代码不需要测试

“这段代码太小了,不会对整体代码造成什么影响。”


每个开发人员都贡献了少量代码,没有破坏任何主要内容。但是你添加的两行代码却造成了意料之外的中断。


大多数开发者不喜欢测试他们的代码,一些人不清楚测试意图,只是认为这是在浪费时间。


你怎么知道你的代码可以完美运行而不会出错呢?


请让你的结论得到一些实际测试的支持。全面的测试可以排除关键错误,从而确保代码按预期方式执行。

6.没有提交合理的文件

我经常遇到没有合理地将文件提交到代码仓库的情况。要么是提交的文件太多,要么提交的文件有遗漏。


有时候一次提交的文件太多,这就丢失了通过 IDE 统计的文件在仓库中最终变更的次数。这主要与开发人员的不良代码管理习惯有关。一股脑的将所有文件一次性提交到代码仓库通常是不可取的。


举一个常见例子,比如 yarn.lock 文件遗漏提交。大多数情况下,这与缺乏相应的知识和理解有关。部分开发者可能不知道某些文件存在的作用,因此害怕将其添加到代码仓库。或者简单地认为这些文件只是本地开发环境的配置而已。


尽管这取决于遗漏的是什么样的文件,但大多数情况下这种错误会把你搞得一团糟。如果缺少 yarn.lock 文件,你可能会在项目中使用不同版本的依赖关系。这很有可能导致一些 BUG。

7.重复造轮子

大多数开发者使用某种框架来简化繁杂开发。如果你正在学习某个框架,你可能会忽视其实框架已经给你提供好了所需要的一些 API。


经常发生的一个错误就是开发者不知道自己正在使用的框架所提供的已有功能有哪些。由于缺乏对框架的全面了解,自己可能会重新造一个轮子来实现框架中已有的功能。


重复造轮子而没有使用框架中的已有功能,这非常浪费时间。

8.眼高手低,缺少训练

熟能生巧,每个人都知道这一点。所以为了拓展自己的技能,你需要更多的训练。作为一个开发者,学习新知识浅尝辄止,这是非常忌讳的。


如果你想学一个新技术或者一门新的编程语言,你可能只有在你的工作之余进行了。这是你自己必须进行的一项投资,以便自己跟上当前流行技术,不脱离时代。


如果你认为你可以做一些练习,我之前写了一篇文章,里面例举了很多有意思的项目,你感兴趣的话可以试一下。

9.乱用继承

继承本身没有什么问题。然而,我看到很多开发者常见的错误就是过度使用继承甚至滥用。如果你发现自己在项目中大量使用了继承,则项目极有可能“过度设计”。


过度设计可能导致代码被设计的过于通用,以至于忽视了最初设计的初衷。因此,代码会变得异常难用。


正如我所说的,继承并不总是不好的。但它不是你修复问题时的第一选择。

10.过于自信

许多开发者过于自信。当然,在一定程度上,拥有自信是一件很棒的事情。作为一名开发者,当你过度自信时,你很难获得从他人那里获得良好的反馈。


过于自信的开发者完全意识不到自己也会犯错误的事实,因此他们倾向于在不咨询他人的情况下做出决策。这不是最好的办法,因为在某些情况下出现一些问题,让你措手不及 – 比如你确实选择了一个非最优的方案,甚至其他开发者觉得自己被忽视和贬低了。


作为一个开发者,保持谦虚,清晰得意识到自己能力所及是非常难得的。

总结

既然我们已经过了一遍上面所述的每一个开发者可能会犯的错误,那么花一两分钟从中学习来避免自己犯错是非常明智的。


在你走向优秀的开发者的道路上,你必须记住,犯错是可以的。人非圣贤,孰能无过。知错能改,善莫大焉。


英文原文:


Classic Mistakes That Every Developer Has Made


2020-05-25 10:168435
用户头像
wangkx 日拱一卒,功不唐捐。

发布了 76 篇内容, 共 20.5 次阅读, 收获喜欢 127 次。

关注

评论 2 条评论

发布
用户头像
第八点正在进行中..
2022-09-21 16:37 · 重庆
回复
用户头像
这个题图有那么一点吓人哦~
2020-06-01 15:33
回复
没有更多了
发现更多内容

探索端智能,加速大模型应用,火山引擎边缘智能 x 扣子技术沙龙等你来

火山引擎边缘云

机器人 智能IoT边缘服务 大模型

一张图精通多种排序算法的选择策略

肖哥弹架构

Java 算法

TDengine 与飞腾腾锐 D2000 完成兼容互认证,推动国产软硬件深度融合

TDengine

数据库 tdengine

喜讯!和鲸科技荣获「2024 爱分析·数据智能优秀厂商」

ModelWhale

人工智能 大数据 数据智能

CPP在内网穿透技术的思考

不在线第一只蜗牛

cpp

TikTok云手机解决运营效率低、封号问题

Ogcloud

云手机 tiktok云手机 tiktok运营 TikTok养号 tiktok矩阵

万界星空科技塑料制品行业MES解决方案

万界星空科技

制造业 mes 万界星空科技 塑料制品 塑料

降本增效、极简体验!828就选华为云Flexus云数据库RDS

轶天下事

聊聊职场务实和务虚的事

老张

认知提升 职场成长

TDengine 与 SCADA 系统无缝连接,点击查看全面操作指南

TDengine

数据库 tdengine 时序数据库

重庆飞亚实业:二维码革新,提升企业安全巡检效率

草料二维码

无代码 低代码平台 无代码平台 草料二维码 无代码低代码

AI生成文档?代码有用,领域知识为王

Bruce Talk

AI 敏捷开发 DDD

软件架构:问题起源和应对

FunTester

淘宝API:淘宝商品评论数据接口(Taobao.item_review)

tbapi

淘宝商品评论接口 淘宝评论API 淘宝商品评论采集 淘宝店铺评论采集

内幕!smardaten无代码平台全方位测评,这些细节你绝对想不到!

中杯可乐多加冰

低代码 无代码开发 无代码 无代码平台

镜舟科技与中启乘数科技达成战略合作,共筑数据服务新生态

镜舟科技

大数据 开源 分析型数据库 StarRocks

百度联合北京市文化和旅游局搭台 让文旅智能体开发者“唱主角”

极客天地

【YashanDB知识库】数据库获取时间和服务器时间不一致

YashanDB

yashandb 崖山数据库 yashandb知识库

开源 TTS 模型「Fish Speech」1.4 发布;GameGen-O :生成开放世界游戏视频模型丨 RTE 开发者日报

声网

中小企业引入MES系统:提升生产效能

万界星空科技

数字化转型 工业互联网 制造业 生产管理系统 mes

公司的电脑性能差有什么解决办法?

上海锐起科技

高可用与低成本兼得:深入了解 TDengine 的双副本与双活方案

TDengine

数据库 tdengine

替换 Oracle ,江河信息用 TDengine 解决高基数查询写入问题

TDengine

数据库 tdengine

和鲸科技聘任上海交通大学医学院张维拓老师为公司医学行业专家顾问

ModelWhale

人工智能 大数据‘’ 医学研究

每个程序员都曾犯过的经典错误_编程语言_Daan_InfoQ精选文章