写点什么

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

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

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

关注

评论 2 条评论

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

系统设计 | 如何管理应用系统中的配置?

少个分号

系统设计

系统设计 | 应用系统缓存策略

少个分号

系统设计

Tableau Desktop 2019 for Mac(全能数据分析工具) v2019.1.0中文激活版

mac

数据分析工具 Tableau Desktop 2019 苹果mac Windows软件 Tableau Desktop

BetterMouse for Mac(鼠标增强软件) v1.5 (4028)永久激活版

mac

鼠标增强工具 苹果mac Windows软件 BetterMouse

ARTS打卡第3周

Johnson

ARTS 打卡计划

系统设计 | 敏捷项目的快速启动指南

少个分号

系统设计

Rhino 7 for Mac(犀牛3D建模软件) 7.32 中文激活版

mac

Rhino 7 苹果mac Windows软件 三维构建软件

系统设计 | 分布式事务场景、概念和方案整理(含概念图)

少个分号

系统设计

系统设计 | "胖瘦" BFF:常见的两种微服务形态

少个分号

系统设计

系统设计 | 数据字典方案

少个分号

系统设计

2023-09-03:用go编写。给你一个 n 个节点的无向无根树,节点编号从 0 到 n - 1 给你整数 n 和一个长度为 n - 1 的二维整数数组 edges , 其中 edges[i] =

福大大架构师每日一题

福大大架构师每日一题

基于状态模式: 没有实践,再多的理论都是扯淡!!!

沉浸式趣谈

C++中的语法知识虚继承和虚基类

芯动大师

系统设计 | 打样工程:增删改查真的那么简单吗?

少个分号

系统设计

系统设计 | 微服务权限检查点

少个分号

系统设计

探索图像数据中的隐藏信息:语义实体识别和关系抽取的奇妙之旅

汀丶人工智能

关系抽取 命名实体识别 智能文档

Parallels Desktop 18 for Mac(Pd虚拟机) 18.3.2中文版

mac

pd虚拟机 苹果mac Windows软件

系统设计 | 术语管理初探讨

少个分号

系统设计

QEMU之CPU虚拟化(三):虚拟机的创建

Linux内核拾遗

Linux Kenel 虚拟化 qemu kvm VT-x

重识Flutter状态管理 — 探索Flutter中的状态

编程的平行世界

flutter android 前端

系统设计 | 业务编号生成

少个分号

系统设计

系统设计 | RESTful API 使用问题和建议

少个分号

系统设计

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