写点什么

筷子定理(二)

  • 2020-01-17
  • 本文字数:919 字

    阅读完需:约 3 分钟

筷子定理(二)

我的筷子定理

还拿开头的 TDD 为例,一般我们大多数人习惯的方式是遇到问题后(例如实现一个计算前 n 位斐波那契数的函数),采用的是自上而下的设计实现方式,就是先想一个解决方案(例如递归啊什么的),然后写代码实现,这很自然是吧,相信大多数人也是这么做得。


而 TDD 所使用的方式是自下而上的设计实现方式,就是先快速解决 n 是 1 的情况,再快速解决 n 是 2 的情况,以此类推,通过不断地“红-绿-重构”来驱动实现的一步步演进同时驱动出好的设计。


乍一看 TDD 所使用的方式有点古怪,而且这个思路的转换对于大多数人都很难,难到让人本能的就想抗拒。所以才会有了这个问题:既然自上而下的方式已经可以解决问题了,为什么还要去自讨苦吃地去学习 TDD 自下而上的方式呢?


看来……是时候掏出我的筷子了…… (▭-▭)✧


如果说解决一个具体问题的过程,可以类比成寻找一根筷子平衡点的过程。


传统的自上而下的设计实现方式就像从左向右寻找筷子的平衡点。



而 TDD 中所描述的自下而上的设计实现方式则像是从右向左寻找筷子的平衡点。



两种方式虽然方向不同,但目标是相同的,自然也没有好坏之分。


既然都可以做到,为什么我还需要学两种不同的方式呢?


答案很简单:因为你会的越多,选择才会越多,也才有可能融会贯通,突破极限,达到一个更高的境界。例如,在找筷子平衡点这个问题上,就可以通过结合这两种不同的方式让整个过程变得更快,且更加容易(我闺女都能轻易做到)。而面对复杂的软件问题时,知识越多,视角越多,同样也可以帮我们从不同方向快速的逼近真正的目标。



那什么是经验呢?在我看来经验就是可以帮我们从一个比别人更接近最终目标的起点开始,而且速度更快一些而已。



那大神是什么?简单来讲大神就是经验丰富到一定程度后,起点无限接近于最终目标而已。



作为大神级人物,当然不止这些,还可以做到触类旁通,融会贯通。甚至突破一些我们认为不能突破的限制,快速的学习和掌握类似的知识技能。


所以

  • 不要问我为什么要学,尝试去问我为什么不学。

  • 不要给自己设围墙,勇于乐于尝试各种不同的语言、工具、思想、甚至看问题的角度。

  • 要持续不断地练习、反思、改进,大神之路就在前方。


本文转载自健荐公众号。


原文链接:https://mp.weixin.qq.com/s/GoG2DGRRkTMF1mA_ARb48w


2020-01-17 11:23756

评论

发布
暂无评论
发现更多内容

手把手教你用python做一个年会抽奖系统

不在线第一只蜗牛

Python 人工智能 编程语言 年会

英特尔正式启动人工智能创新应用大赛,助力更多开发者抓住 AI PC新机遇

E科讯

斩获冠亚军!开源检索引擎Puck闪耀NeurIPS'2023

百度Geek说

搜索引擎 开源 企业号12月PK榜

软件测试/测试开发丨测试用例价值与体系

测试人

软件测试 测试开发

SEO搜索引擎优化——被严重低估网络营销核心技能!

九凌网络

3分钟看懂如何给开源项目发起提案

伤感汤姆布利柏

Swagger 注解详述:如何编写更友好的API文档

Liam

后端 接口文档 API swagger 接口工具

基于品高基础云+容器云的DevOps双模应用探索

品高云计算

海外云手机一般用来做什么?

Ogcloud

跨境电商

学习贯彻“枫桥经验”,积极践行央企担当!

天翼云开发者社区

生态链 战略合作

观点提炼 | 美国CISA、ODN等发布《SBOM推荐实践指南》

网安云

开源软件供应链 SBOM 软件供应链安全 开源软件供应链安全 软件物料清单(SBOM)

ETLCloud与简道云结合,实现企业信息同步

RestCloud

数据同步 ETL

如何使用 NFTScan NFT API 在 Base 网络上开发 Web3 应用

NFT Research

API NFT\ NFTScan

引领汽车营销新趋势,3DCAT实时云渲染助力汽车三维可视化

3DCAT实时渲染

实时渲染 实时渲染云 汽车三维可视化

首批!天翼云大数据平台率先通过信通院无服务器架构大数据平台测试

天翼云开发者社区

云计算 大数据 架构 测试

软件测试/测试开发丨Linux 进程与线程

测试人

Linux 软件测试 测试开发

你知道海外云手机可以用于外贸测评吗?

Ogcloud

跨境电商 外贸

基于低代码平台开发应用程序

互联网工科生

软件开发 低代码 应用开发 可视化开发

每日一题:LeetCode-718. 最长重复子数组

Geek_4z9ami

Go 面试 算法 LeetCode 动态规划

对于企业软件系统而言,唯一重要的架构设计是什么

FN0

架构 软件系统

除了增删改查,后端一定要学会这些!

伤感汤姆布利柏

后端 低代码

我对线上质量监控大盘的思考

老张

质量保障 质量度量 #监控

筷子定理(二)_语言 & 开发_王健_InfoQ精选文章