[置顶] 从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最猥琐。
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合终身会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· golang中写个字符串遍历谁不会?且看我如何提升 50 倍
· C# 代码如何影响 CPU 缓存速度?
· 智能桌面机器人:使用 .NET 为树莓派开发 Wifi 配网功能
· C# 模式匹配全解:原理、用法与易错点
· 记一次SSD性能瓶颈排查之路——寿命与性能之间的取舍
· 时隔半年,拾笔分享:来自一个大龄程序员的迷茫自问
· C#-Visual Studio工具使用实践
· 《程序员的底层思维》读后感
· WineHQ 发布的 Framework Mono 6.14 的这个特性对Windows Form
· 不写一行代码 .NET 使用 FluentCMS 快速构建现代化内容管理系统(CMS)