极客视点
极客时间编辑部
极客时间编辑部
113240 人已学习
免费领取
课程目录
已完结/共 3766 讲
2020年09月 (90讲)
时长 05:33
2020年08月 (93讲)
2020年07月 (93讲)
时长 05:51
2020年06月 (90讲)
2020年05月 (93讲)
2020年04月 (90讲)
2020年03月 (92讲)
时长 04:14
2020年02月 (87讲)
2020年01月 (91讲)
时长 00:00
2019年12月 (93讲)
2019年11月 (89讲)
2019年10月 (92讲)
2019年09月 (90讲)
时长 00:00
2019年08月 (91讲)
2019年07月 (92讲)
时长 03:45
2019年06月 (90讲)
2019年05月 (99讲)
2019年04月 (114讲)
2019年03月 (122讲)
2019年02月 (102讲)
2019年01月 (104讲)
2018年12月 (98讲)
2018年11月 (105讲)
时长 01:23
2018年10月 (123讲)
时长 02:06
2018年09月 (119讲)
2018年08月 (123讲)
2018年07月 (124讲)
2018年06月 (119讲)
时长 02:11
2018年05月 (124讲)
时长 03:16
2018年04月 (120讲)
2018年03月 (124讲)
2018年02月 (112讲)
2018年01月 (124讲)
时长 02:30
时长 02:34
2017年12月 (124讲)
时长 03:09
2017年11月 (120讲)
2017年10月 (86讲)
时长 03:18
时长 03:31
时长 04:25
极客视点
15
15
1.0x
00:00/04:30
登录|注册

从业30年得出的软件开发经验(上)

讲述:杜力大小:2.06M时长:04:30
资深软件工程师 Julio Biason 从 1990 年开始从事软件开发工作,以下是他从过去 30 年软件开发生涯总结出来的一系列冷笑话式的经验之谈。

1. 规范先行,然后才是代码

在知道要解决什么问题之前,请不要写代码。因为“如果没有需求或设计,编程就成了一门往空文本里添加 bug 的艺术”。
每当你停下来,看着代码,并开始思考下一步该做什么的时候,通常是因为你不知道下一步该做什么。这个时候,你需要做的是与同事讨论,或者可能需要重新思考之前的解决方案。

2. 用批注的方式把实现步骤写下来

如果你不知道从哪里下手,先把程序的流程写下来,然后在批注中添加代码。你也可以把每个批注当成是一个函数,然后用代码实现它们。

3. 单元测试还不够,最好还要有集成测试

在我目前的工作中,我们会进行模块和类级别的测试。这些测试可以让我们知道模块或类的行为,但无法让我们知道系统整体的行为——而集成测试可以告诉我们这些。

4. 测试让 API 变得更健壮

代码是分层的:存储层负责数据持久化,处理层负责转换存储的数据,视图层负责呈现数据,等等。分层测试可以让你更好地了解各个层的 API,知道如何更好地调用各个层。

5. 做好丢弃代码的准备

有很多人在开始使用 TDD 时会感到很恼火,因为他们可能需要重写很多代码,包括已经写好的那些。而这正是 TDD 的“设计哲学”:随时准备好丢弃你的代码。不过,不管之前写了怎样的代码,它们终究不是解决问题的最终方案。你浪费了写代码的时间却换来了对问题更好地了解。

6. 好的编程语言自带测试框架

可以肯定地说,如果一门编程语言的标准库自带了测试框架,哪怕这个框架很小,它的生态系统也会得到比那些不提供测试框架的编程语言更好的测试,即使外部为这些语言提供了很好的测试框架。

7. 想得太长远是一种浪费

你在写代码时想到的未来的问题,可能永远都不会出现,而你不得不去维护一大堆在未来可能永远都用不上的代码,甚至重写所有代码。问题要一个一个解决,解决完眼前的,再解决下一个。到了某个时刻,你可能会从解决方案中找到某种模式,而这些模式才是用来解决“所有问题”的良方。

8. 写文档很重要

谁都知道,给函数、类或者模块编写文档是一件苦差事,但这也是在给未来的你省下很多麻烦。代码的文档实际上是一种契约:文档里怎么写的,这个函数就是用来做什么的。如果后面你发现代码和文档不匹配,那么就是代码有问题,而不是文档有问题。

9. 如果一个函数文档里出现了“和”逻辑,那就一定有问题

一个函数应该只做一件事情。在给函数编写文档时,如果你发现需要用到“和”逻辑,那说明这个函数所做的事情不止一件。这个时候需要把函数拆成多个,不要在文档里出现“和”逻辑。

10. 在修改接口时要小心

上面提到了重命名函数,如果调用函数的代码完全处在你的控制之下,那么这么做就没什么问题,你只需要把需要修改的地方找出来,然后改掉它们就可以了。
但如果被重命名的函数是作为库的一部分暴露给外部,那就不能随意修改了。因为这样做会影响到所有调用函数的代码,而这些代码不在你的掌控之下,修改函数名只会给这些代码的主人带来大麻烦。
你可以新增一个函数,然后把旧函数标记为已弃用。经过一些版本发布之后,就可以慢慢将旧函数去掉。
以上就是今天的内容,除了上述 10 点以外, Julio Biason 还建议程序员不要将布尔类型作为参数;通过命令行运行测试用例;不要去修改项目以外的东西等等,其余的经验及建议将在下篇文章中呈现。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
免费领取
登录 后留言

全部留言(1)

  • 最新
  • 精选
  • 臧萌
    我也就听了十几遍
收起评论
大纲
固定大纲
1. 规范先行,然后才是代码
2. 用批注的方式把实现步骤写下来
3. 单元测试还不够,最好还要有集成测试
4. 测试让 API 变得更健壮
5. 做好丢弃代码的准备
6. 好的编程语言自带测试框架
7. 想得太长远是一种浪费
8. 写文档很重要
9. 如果一个函数文档里出现了“和”逻辑,那就一定有问题
10. 在修改接口时要小心
显示
设置
留言
1
收藏
99+
沉浸
阅读
分享
手机端
快捷键
回顶部