AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

筷子定理(二)

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

评论

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

MySQL索引底层为什么用B+树?看完这篇文章,轻松应对面试

一灯架构

Java 10月月更

基于Jmeter压测IoT物联网平台的性能——实践类

阿里云AIoT

Java 物联网 存储 网络性能优化 测试技术

进制转换、原码、反码、补码及位运算详解

夏志121

Java 后端 进制转换 10月月更

面试官竟然问我订单ID是怎么生成的?难道不是MySQL自增主键?

一灯架构

Java 10月月更

c++11面试宝典(final,delete,deault,explicit,lambda表达式)

雪芙花

c c++ 10月月更

c++11基础

雪芙花

c c++ 10月月更

“程”风破浪的开发者|OpenHarmony设备开发之路【01】-helloword

坚果

OpenHarmony 10月月更 “程”风破浪的开发者

Java基础(九)| ArrayList详解与应用

timerring

Java ArrayList 10月月更

长安链源码分析之网络模块 net-liquid(10)

【kafka原理】Kafka生产者 (分区策略和ACK应答机制)

石臻臻的杂货铺

kafka Kafka实战 10月月更

技术内幕 | StarRocks Pipeline 执行框架(下)

StarRocks

数据库

运算符号

魏铁锤

10月月更

HTTP - HTTP/2 知识点

懒时小窝

HTTP http2

立即升级 NGINX 以应对漏洞风险

NGINX开源社区

nginx 安全 漏洞

“程”风破浪的开发者|程序员必备的这些学习方法与技能你能get到嘛?

浅羽技术

Java 学习方法 “程”风破浪的开发者

牛客刷题系列之进阶版

雪芙花

c c++ 10月月更

长安链源码分析之网络模块 net-liquid(11)

Baklib协作文档平台|企业如何进行文档协同?

Baklib

效率工具 企业 文档 协作 协作文档

“程”风破浪的开发者|OpenHarmony短信登录及倒计时实现

坚果

OpenHarmony 10月月更 “程”风破浪的开发者

2022年9月中国网约车领域月度观察

易观分析

网约车

如何通过数字体验平台(DXP)更好的为客户提供客户服务

Baklib

知识管理 数字体验

Web3.0 杂谈 -#007(54/100)

hackstoic

Web3.0

长安链源码分析之网络模块 net-liquid(9)

【Java深入学习】一个关于“锁”的程序-中

Geek_65222d

10月月更

语法结构

魏铁锤

10月月更

一篇文章讲清楚MySQL的聚簇/联合/覆盖索引、回表、索引下推

一灯架构

Java 10月月更

docker学习笔记(三)

Studying_swz

10月月更

Java 编程之标记语句

魏铁锤

10月月更

企业是如何搭建帮助中心的?

Baklib

效率 产品 企业 帮助中心 产品文档

长安链源码分析之网络模块 net-liquid(8)

docker学习笔记(四)

Studying_swz

Docker 10月月更

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