写点什么

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

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

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

关注

评论 2 条评论

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

专业解读财务共享实现财务数智化转型的有效路径

用友BIP

财务共享

基于openfaas托管脚本的实践

百度Geek说

数据库 百度 企业号 5 月 PK 榜

用友与临港集团签署战略合作协议

用友BIP

国资国企数智化转型

跪了!Alibaba内部优质Springboot笔记:两大项目实战+源码解析

做梦都在改BUG

Java spring 微服务 Spring Boot 框架

如何通过财务共享推进财务精细化管理

用友BIP

财务共享

软件测试/测试开发丨Web自动化测试中显式等待的高级使用

测试人

程序员 软件测试 自动化测试 测试开发

TiDBv6.5离线部署

TiDB 社区干货传送门

6.x 实践

TiDB x Flink 数据集成实践

TiDB 社区干货传送门

实践案例 大数据场景实践 数据中台场景实践 OLAP 场景实践

SpringBoot 实现启动项目后立即执行方法的几种方式

Java你猿哥

源码 jdk Spring Boot ssm

属实不赖!Alibaba开源GitHub星标114K微服务架构全彩进阶手册

Java你猿哥

Java 架构 微服务 微服务架构 ssm

池州控股集团财务共享项目启动啦!

用友BIP

财务共享

秒杀系统常见问题—如何避免库存超卖?

做梦都在改BUG

秒杀系统 电商超卖

面试进阶齐飞!Github一天万赞的阿里Java系统性能优化有多牛?

Java你猿哥

Java JVM ssm Java性能优化

Github上星标55.9k的微服务神仙笔记真的太香了

做梦都在改BUG

Java 架构 微服务 Spring Cloud 设计模式

开发敏捷高效 | 云原生应用开发与运维新范式

CODING DevOps

DevOps 云原生 CODING DevOps 开发运维 敏捷高效

微服务是不是金科玉律?基于Spring Cloud如何构建分布式系统?

做梦都在改BUG

Java 架构 微服务 Spring Cloud

TiDB x Flink x Iceberg 实时 ODS 实践

TiDB 社区干货传送门

实践案例 大数据场景实践 实时数仓场景实践 数据中台场景实践 OLAP 场景实践

TiDB 使用国内公有云和私有部署的 S3 存储备份指南

TiDB 社区干货传送门

数据库架构设计 6.x 实践

【5.19-5.26】写作社区优秀技术博文一览

InfoQ写作社区官方

热门活动 优质创作周报

如何将千亿文件放进一个文件系统,EuroSys'23 CFS 论文背后的故事

Baidu AICLOUD

文件存储 元数据

用友协办国有资本投资运营公司第八次圆桌会议, 展示数智国资发展新路径

用友BIP

国资国企数智化转型

浅析财务共享各阶段面临的挑战

用友BIP

财务共享

JVM——解析运行期优化与JIT编译器

Java你猿哥

JVM ssm 虚拟机 编译器 JIT编译器

官宣!时序数据库 TDengine 与天翼云完成产品兼容性认证

爱倒腾的程序员

涛思数据 时序数据库 ​TDengine

阿里全新推出:微服务突击手册,把所有操作都写出来了|超清PDF

Java你猿哥

Java spring Spring Cloud ssm Ribbon

深入浅出微服务:40个微服务架构实战案例(Dubbo+Springcloud)

做梦都在改BUG

Java 微服务 Spring Cloud

惊喜!华秋DFM软件升级,新功能让你爱不释手

华秋电子

JVM—解析运行期优化与JIT编译器

做梦都在改BUG

Java JVM JIT

厦门狄耐克:助推智慧医疗,需要夯实自身的技术底座

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 5 月 PK 榜

C4D 常用 14 款插件

Finovy Cloud

C4D 3D软件

Github标星78k,Alibaba最新发布的Spring Boot项目实战文档!太强了

Java你猿哥

Java 面试 Spring Boot ssm Spring MVC

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