代码改变世界

[置顶] 从small到safe,形容词的学问

2012-11-13 18:42  java20130722  阅读(151)  评论(0)    收藏  举报

高中的时候,历史老师黄勇是个非常有趣的人。黄老师讲课的时候眉飞色舞,我一个哥们说,上他的课你不可能睡觉。因为太有趣了。也很幸运有这么好的老师。黄老师是特级教师,后面好像去了教育局。也是很遗憾的。

 

历史上经常会有什么新革命,新变法之类的。每次,遇到这种带有“新”字的东西,黄老师都要问,“这个‘新’,‘新’在哪里?”。

当你不断的被重复某句话的时候,你很难不记住这句话。就好像恒源祥的广告,“恒源祥,羊~羊~羊~”,听过以后,就很难从脑袋里拔掉。不信你就试试下面的。

 

“这个‘新’,‘新’在哪里?”

“这个‘新’,‘新’在哪里?”

“这个‘新’,‘新’在哪里?”

“这个‘新’,‘新’在哪里?”

 

记住了?。

 

到后来,不用老师说,我们都会异口同声的说“这个‘新’,‘新’在哪里?”

 

问了这个问题以后,黄老师会教我们如何分析:新在哪里?与旧有什么不同?

也就是那个时候我开始发现,一个小小的形容词都会有这么多的学问。好多时候,对一个东西的认识的层度,似乎很神奇的取决于你对这个东西的形容词的理解层度。

 

几年之前,大学本科的时候。我看过了Kent Beck的《Test Driven Development》。在TDD这本书中,Beck经常提到一个词:small steps。也就是在我们的写TDD,写重构的时候,需要small step。

 

准备好了吗?

什么是small step?

small是什么?

跟big有什么区别?

多small才算是small?

为什么需要small?

 

连珠炮似的发问已经条件反射般的射进了我的脑子

 

一次,参加完成都的openparty,趁了大大的一顿饭,聊起了很多。一段,我当时谈到了我的看法,就是TDD中最难拿捏的问题也许就是small step的问题,多small才足够。大大也说,就算是工作了几年的人也不一定能够把控的好。后面也听到过八叉讲Pair换键盘的速度最好是15分钟以内。这似乎都在说的是small。

 

在我看来,small是一种关乎信心的东西,虽然人是很聪明的,但终究人的智力是有限的。人的大脑能处理的复杂度也是有限的。当我们使用small的时候,我们出现错误的可能就小了。也不会在进行一个big step的时候,跨出了一大步,才开始想起,蛋在哪里?

 

前几天,当我看到了Beck的比较新的一篇博客《Don’t Cross the Beams: Avoiding Interference Between Horizontal and Vertical Refactorings》的时候,http://www.threeriversinstitute.org/blog/?p=594 (如果你看过TDD,不妨看下这篇文章,会对你的TDD看法有些新的认识,我也想稍微整理下我的思路,以后写篇博客,从不同的角度谈谈我的认识,应该也会比较有趣)

文章里,Beck没有再说small steps了,取而代之的是safe steps。

 

再次准备好了?

什么是safe step?

safe是什么?

unsafe是什么?

多safe才算是safe?

为什么需要safe?

 

我不想在结尾给出一个标志性的答案,但是我觉得当你问了上面的问题的时候,你会想,至少是尝试想其中的奥秘。也会发现从small到safe。这个形容词,更加反映了我们关心的问题的本质。

 

生活中,学习中,我们有很多时候会遇到形容词,形容词也是我们生活中不可少掉的一部分,我们会说一个女人长的很性感,另一个男人长的很猥琐。但也许下次,我们可以都多问问,多多想想这个女人是哪里性感了,而这个男人又是哪里猥琐了。

 

当然,我个人的话,是觉得女人臀部最性感,男人coding最猥琐。

编辑推荐:
· golang中写个字符串遍历谁不会?且看我如何提升 50 倍
· C# 代码如何影响 CPU 缓存速度?
· 智能桌面机器人:使用 .NET 为树莓派开发 Wifi 配网功能
· C# 模式匹配全解:原理、用法与易错点
· 记一次SSD性能瓶颈排查之路——寿命与性能之间的取舍
阅读排行:
· 时隔半年,拾笔分享:来自一个大龄程序员的迷茫自问
· C#-Visual Studio工具使用实践
· 《程序员的底层思维》读后感
· WineHQ 发布的 Framework Mono 6.14 的这个特性对Windows Form
· 不写一行代码 .NET 使用 FluentCMS 快速构建现代化内容管理系统(CMS)
点击右上角即可分享
微信分享提示