程序员的9个经验教训,只有亲身经历才会懂

 2023-09-05 阅读 61 评论 0

摘要:程序员从挫败中吸取经验,不断进步,本文介绍我亲身经历的9个经验教训。 1. 不存在最便宜,最快速,最可靠的软件 这是戈登贝尔的名言,这里要吸取的经验教训是,你应该设计尽可能简单的系统或软件,降低复杂性以减少bug的数量。 2

程序员从挫败中吸取经验,不断进步,本文介绍我亲身经历的9个经验教训。

1. 不存在最便宜,最快速,最可靠的软件

这是戈登·贝尔的名言,这里要吸取的经验教训是,你应该设计尽可能简单的系统或软件,降低复杂性以减少bug的数量。

2. 理解你的代码

有时候你修复了一个bug,但不明白问题是怎么解决的。相信大多数程序员都经历过这种情况。确保你理解自己的代码,找出为什么这个修复起了作用。

刨根问底的心态比什么都重要,在必要的时候要虚心求助,保持这种态度,不知不觉中你已经成为人们转而求助的对象。

复制粘贴代码也是如此。我们都用过Stack Overflow,复制粘贴别人的代码,这没什么丢脸的,但是如果你不理解代码,要么不要使用它,要么向别人寻求帮助。

使用你不理解的代码被称为voodoo Coding,这几乎保证了将来一定会发生bug.

3. 写描述性更强的代码

注释在源代码中非常重要,但如果可以的话,不要使用注释,而是编写更具描述性的代码。

为什么?

因为修改代码时往往会忘记更新注释。我的观点是:注释有时候会说谎(不正确),它们无法与最新的代码相匹配。

三种常见的代码文档是:

  • 在代码中添加注释。
  • 编写单独的文档。
  • 自我解释的代码。

让我详细说明最后一点,这就是我所说的写更具描述性的代码:

  • 使用好的设计模式,令代码库的逻辑结构更清晰,更容易导航。
  • 不要使用缩写,使用变量、类和函数的全名。例如将一个变量命名为WindowManager,而不是wm。调用readFileToString而不是rf。这种命名方法可以帮助我们更容易理解代码,尤其是过几个月之后再回过头来看代码的时候。
  • 尽可能将代码封装带函数中,并根据功能命名。例如,创建一个将文件读入字符串的函数,将其命名为readFileToString(String fileName)。就算不阅读源代码,人们也会知道它的作用。理想情况下,你的代码是一系列类似于人类语言的函数调用序列,代码本身就是文档!

4. 不要过度使用正则表达式

当处理文本问题时,有些人会想:“我知道,我用正则表达式!“,现在他们有两个问题。

这是个老笑话,但却是真的。正则表达式很难用,当你解决了一个特定的问题,再用相同的方式解决下一个问题时很可能会失败。

在这里插入图片描述

当然这只是我的观点,但我建议避免复杂的正则表达式。通常像split、substring、endsWith、indexOf等函数的组合可以解决大多数问题,并得到可读性更强的代码。

5. 软件就像教堂,先建造然后祈祷

《Cathedral and the Bazaar》是一本对比两种不同开发模式的书,正如维基百科所说:

在大教堂模式中,每个软件版本都有源代码,但在不同版本之间开发的代码仅限于一组专用的软件开发人员。
Bazaar模型,很多程序员通过网络参与开发,Linux内核项目的领导者Linus Torvalds被认为是这种模式的创始人。

两种模式各有利弊。人们普遍认为,软件是一个迭代开发的产品,在开发过程中,功能是逐渐增加的,用户最好从一开始就参与到开发过程中来。

在这里插入图片描述

6. 便宜,快速,可靠,只能选两个

我喜欢这个命题,它强迫项目领导人深入思考:

  • 快速和可靠,这是可以做到的,但需要请最好的程序员。
  • 便宜和快速,很多人都可以实现,但别指望它可靠!
  • 便宜又可靠?如果你运气好可以做到。首先你要找到一个成本低但能力足够强的程序员,这个寻找过程本身就花费很多时间,然后还需要大量的迭代(更多的时间)才能做到。

7. 差一错误

软件工程中有三个难题:

  • 命名(Naming things)
  • 缓存无效(Cache invalidation)
  • 差一错误(Off-by-one errors)

对于计数,人类从1开始,计算机则从0开始。这个简单的事实已经成为无数错误的根源,你可能已经犯了差一错误,就算现在没有将来也会遇到。

8. 尽可能多的捕捉异常

最好的软件可以处理所有的错误,即便是那些“永远不会发生”的事情。

大多数软件都是为了实现“快乐流”而编写的,在这个过程中,一切都按预期工作,用户不会做奇怪的事情。但现实世界充斥着混乱,随着时间推移,可能出错的东西一定会出错。所以尽量捕捉尽可能多的错误,尤其是当你的软件即将要添加一项关键的功能。

9. 代码行数与工作效率无关

代码行数与项目进度无关,同样道理,写更多的代码不意味着工作效率或项目质量越高。

最好的代码往往只需要用最少的行数解决问题,请记住一个著名的原则:KISS,Keep It Simple,Stupid.

如果您想了解更多关于软件工程最佳实践的知识,可以继续阅读我的文章:The 12 Habits of Highly Effective Software Developers。

原文出处:Medium
作者:Erik van Baaren
原文标题:9 Programmer Life Lessons You Must Experience Yourself to Truly Understand

你们的点赞和收藏是我们最大的创作动力,我们每天都会为大家带来数据科学和量化交易领域的精品内容。

蜂鸟数据:开源金融数据接口,一个API连接世界金融市场。

蜂鸟数据团队由业界顶尖的数据工程师,数据科学家和宽客组成,我们正努力构建一个开源的金融数据库,并提供API接口,目标是令金融数据开源化和平民化。

浏览并测试我们接口吧,目前覆盖股票,外汇,商品期货,数字货币和宏观经济领域,包括实时报价(tick)和历史数据(分钟),提供REST API和Websocket两种接入方式,能够满足金融分析师,量化交易和理财app的需求。

蜂鸟数据API接口文档

登录蜂鸟官网,注册免费获取API密钥

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/986.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息