10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

筷子定理(二)

  • 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:23783

评论

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

安全与智能双加持,Coremail XT6解锁高效办公密码

科技热闻

CAD命令行拖出来以后如何还原

极客天地

如何显示CAD图纸详细信息

极客天地

如何高效智能地进行设备数据采集?

万界星空科技

数据采集 mes 万界星空科技mes 设备数据采集 设备管理软件

拥抱国产化:转转APP的鸿蒙NEXT端开发尝鲜之旅

JackJiang

网络编程 即时通讯 IM

深入研究:小红书笔记详情API接口详解

tbapi

小红书笔记详情接口 小红书API 小红书笔记详情api 小红书笔记采集

加密货币在去中心化云算力生态中扮演什么角色?

PowerVerse

加密货币 Token 去中心化云算力

CAD图纸在天正中显示不全怎么办

极客天地

Java程序使用预处理语句的性能提升

GreatSQL

开发者必备的这些API协议,Apipost都支持!

数据追梦人

Python 实战:用 API 接口批量抓取小红书笔记评论,解锁数据采集新姿势

tbapi

小红书笔记接口 小红书API 小红书笔记评论采集 小红书笔记内容采集

如何灵活处理参数值?Apipost自定义函数功能让调试更简单高效!

数据追梦人

长安马自达全球车型MAZDA 6e启航欧洲,全球化战略迈入新里程

极客天地

OCR技术难点解读:数学公式检测与识别

合合技术团队

人工智能 算法 OCR OCR识别 #大数据

AI与智能金融服务:如何利用AI分析大数据预测金融市场波动?

天津汇柏科技有限公司

人工智能 AI 人工智能

健康管理行业使用堡垒机场景简单了解

行云管家

网络安全 信息安全 数据安全 健康管理

珠海等保测评公司名称以及地址看这里!

行云管家

等保 等保评测

中国游戏出海迎来新机遇,腾讯游戏安全ACE助力应对安全挑战

新消费日报

如何在 NocoBase 中实现 CRM 销售漏斗可视化?

NocoBase

开源 低代码 零代码 销售 CRM

GenAI 时代,数据唾手可得,但真正的挑战已经转变...

Baihai IDP

人工智能 程序员 AI LLM GenAI

PWA与小程序:技术架构、生态对比及全球化部署策略分析

xuyinyin

英特尔为酷睿 Ultra 200S-K 处理器发布 Boost 超频配置文件, 游戏性能提升 7%

E科讯

基于 Flink 的中国电信星海时空数据多引擎实时改造

Apache Flink

大数据 flink 实时计算

豆瓣均分8.5+,想提升效能水平的技术领导都在读(部分可下载!)

思码逸研发效能

团队管理 个人成长 读书 研发效能 思码逸

开源之夏2025 Apache DolphinScheduler课题宣讲

白鲸开源

大数据 开源 Apache DolphinScheduler 任务调度 开源之夏

DolphinScheduler开发者必看!IDEA本地调试实战指南

白鲸开源

开源 Apache DolphinScheduler 任务调度

Prometheus配置docker采集器

秃头小帅oi

YashanDB|使用 select * 创建物化视图无法触发查询重写?问题出在这儿!

数据库砖家

数据库·

淘宝天猫商品数据爬取全攻略:官方API与非官方接口双管齐下

代码忍者

淘宝API接口

做好批次与保质期管理,告别库存混乱与货物过期痛点!

积木链小链

数字化转型 智能制造 批次管理

Java程序使用预处理语句的性能提升

秃头小帅oi

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