写点什么

筷子定理(二)

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

评论

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

API安全问题的原因及挑战

阿泽🧸

API 11月月更

功能强大的开源网络监控工具:LibreNMS,牛逼!

wljslmz

网络监控 11月月更 LibreNMS

综合实验 配置三层 热备 生成树 ospf 和 rip 以及他们之间的重分发等将内网 全通

初学者

网络 11月月更

数据预处理和特征工程-数据预处理-特征选择-方差过滤

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

常见的数据指标体系

穿过生命散发芬芳

数据指标 11月月更

支持日均亿级交易处理,腾讯云&金蝶“国产数据库联合解决方案”正式发布

科技热闻

Pod 运行时调试

星际行者

Java Web(六)Servlet

浅辄

javaWeb Servlet 11月月更

AIOps

星际行者

Java Web(七)Request&Response

浅辄

javaWeb Request Response 11月月更

【愚公系列】2022年11月 微信小程序-app.json配置属性之debug

愚公搬代码

11月月更

透过Net5.5G的棱镜,运营商可以见未来,见机遇

脑极体

SQL语句对基本表的修改表结构和数据完整性

乔乔

11月月更

Zebec Chain有望成为公链赛道新兴生力军,地平线计划持续进击

股市老人

Zebec Chain有望成为公链赛道新兴生力军,地平线计划持续进击

鳄鱼视界

灰度发布设计

星际行者

SpringMVC+Mybatis整合的增删改查

石臻臻的杂货铺

spring mybatis 11月月更

算法题学习---链表中倒数最后k个结点

桑榆

算法题 11月月更

TSDB助力风电监控

CnosDB

IoT 时序数据库 开源社区 CnosDB infra

Testbench 的编写与应用

梦笔生花

Verilog 11月月更 testbench

万万没想到,除了香农计划,Python3.11竟还有这么多性能提升!

Python猫

Python

探知数字化研发2 - 企业架构篇

薛飞

研发管理 数字化 企业构架

【C语言】enum 枚举类型

謓泽

11月月更

混沌工程

星际行者

为什么大家都喜欢使用宝塔面板?

源字节1号

微信小程序 软件开发

对苹果产品一个非常好的评价

星际行者

【设计模式】以国足的例子来解释代理模式,希望自己不要被退钱

游坦之

设计模式 11月月更

混沌工程实践

星际行者

深入理解客户端篇之OkHttp

邱学喆

websocket 任务调度 连接池 OkHttp3

动态路由协议二

初学者

动态路由 11月月更

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