OceaBase开发者大会落地上海!4月20日共同探索数据库前沿趋势!报名戳 了解详情
写点什么

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

  • 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:168072
用户头像
王坤祥 日拱一卒,功不唐捐。

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

关注

评论 2 条评论

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

华为云联合HarmonyOS重磅发布智联生活行业加速器

华为云开发者联盟

华为云 智联生活

MySQL性能测试之insert&delete【FunTester框架】

FunTester

MySQL 性能测试 测试框架 FunTester delete

浅谈MySQL中的游标

麦洛

MySQL 游标

大湾区的“科创土壤学”

脑极体

年后跑路第一战,从Java泛型学起!

麦洛

Java Java泛型

AfterShip APP 项目数据驱动的演进

AfterShip

数据库 数据 数据驱动

Camtasia混音教程

淋雨

Camtasia

新思科技推动DevSecOps落地,帮助企业走出“安全孤岛”

InfoQ_434670063458

DevSecOps 新思科技 软件安全

以容器的方式运行极狐GitLab Runner

极狐GitLab

Docker runner 极狐GitLab

如何避免产品Backlog的这七个常见错误

Scrum中文网

Scrum 敏捷开发 研发管理 需求管理 内容合集

和12岁小同志搞创客开发:手撕代码,做一款密室自动门

不脱发的程序猿

少儿编程 传感器 智能硬件 创客开发 Arduino

开源demo| 智慧协同让企业更便利

anyRTC开发者

音视频 智慧协同 开源demo 远程协助 远程勘查

基于云的技术架构设计实践-第4篇

hackstoic

运维 云原生 签约计划第二季 业务运维

WAVE SUMMIT+2021为开发者准备的“小心思”,你get到了吗

科技热闻

ReactiveNetwork库时如何实现网络状态监听的

Changing Lin

12月日更

国产分布式数据库StarDB核心技术大揭秘 一:内核分解之数据分片

京东科技开发者

数据库

作业1

施正威

消费医疗门诊的数字化运营

boshi

随笔杂谈

你知道敏捷团队的迭代目标达成率该是多少吗?

Scrum中文网

Scrum 敏捷开发 研发管理 内容合集 迭代管理

国产分布式数据库StarDB核心技术大揭秘二:智能运维管控

京东科技开发者

数据库

架构训练营-模块一作业

伊静西蒙

五分钟,让你明白MySQL是怎么选择索引《死磕MySQL系列 六》

咔咔

MySQL MySQL高级 索引选择而

和12岁小同志搞创客开发:手撕代码,做一款温湿度检测器

不脱发的程序猿

少儿编程 智能硬件 温度传感器 创客开发 Arduino

Android C++系列:Linux网络(一)网络模型

轻口味

android 28天写作 12月日更

库存管理系统到底有什么作用?

低代码小观

CRM 企业管理系统 ERP 库存 CRM系统

底层逻辑:变化背后的不变

石云升

读书笔记 28天写作 12月日更

WePack —— 助力企业渐进式 DevOps 转型

CODING DevOps

统一管理 WePack 制品管理 研发构建产物 安全管控

2022年,RPA的5大发展趋势

金小K

区块链 AI RPA 机器人流程自动化 人工智能「

Python Qt GUI设计:如何调整组件布局比例?(拓展篇—1)

不脱发的程序猿

Python PyQt GUI设计 上位机 调整组件布局比例

MySQL锁的分析实战

卢卡多多

28天写作 MySQL 数据库 锁分析 签约计划第二季 12月日更

手把手教你实现网页端社交应用中的@人功能:技术原理、代码示例等

JackJiang

即时通讯 IM web socket

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