小王听说测试驱动开发(Test Driven Development,简称TDD) 非常火爆,作为一个热爱新技术的程序员, 肯定得学一下。
他先是找到了TDD的经典书籍, 也就是Kent Beck写的《测试驱动开发》, 仔细看了一遍,他很快发现这本书虽然阐明了TDD的原理和实践, 但是举的例子实在是太简单了, 和日常的工作相距太远,很难体会到TDD的精髓。
要是有一本书用TDD的方式讲解Web系统开发就好了, 小王去找师傅求助。
师傅拿出一本书说: “这本书里讲的就是TDD Web网站的例子, 一定要好好看看啊”
小王一看封面:《Python Web开发 --测试驱动方法》 , 心里立刻凉了半截: “这是Python, 我只会Java编程, 不一定能看懂啊。”
师傅说: “不要担心, 这本书涉及到的技术在我们的Java 项目中也有使用, 只是用另外一种语言描述而已, 你看起来会很熟悉的。”
小王将信将疑,晚上回到家, 翻开书来先看了几页,马上就发现了熟悉的东西: 嘿, 书中要用Git来管理代码, 这个我会, 完全没有压力。
还有为了使用测试驱动开发 ,要用到Selenium 来做功能测试, 这个小王很早就搞过了, 就是模拟一个人在浏览器中的操作, 例如点击,输入文字 等来测试,只不过之前小王用的是Javascript 版本的, 现在需要熟悉一下Selenium 在Python中的表示:
Python语法看起来还是挺直观的, 和之前自己学过的javascript版本的Selenium非常相似。
为了做单元测试, 书里还用到了Python的unittest 模块, 这长的和Java 的JUnit很像:
公众号“码农翻身”注: 这个例子来源于《Python Web开发 测试驱动方法》一书
小王想:这个Python的单元测试的基本结构和Java 的JUnit很像, 都用setUp去做一些初始化工作, 用tearDown去做清除工作。测试也都以testXXXX开头。
但是这个 self 是什么鬼? 看样子应该和java 中的 this 类似, 为什么每个方法上都得加上 self 作为参数, 实在是太丑陋了!
小王觉得难于忍受, 但是也没有办法,只能硬着头皮看下去。
既然是开发Web应用, 免不了要用一个Web框架, Python世界就是著名的Django, 小王看了书中的介绍,也是一个MVC框架, 虽然和java世界的Struts, SpringMVC不同, 但感觉就是熟悉的陌生人。
书中还用到了Jenkins, 不就是一个持续集成的框架嘛, 在项目中已经用过了,自己还写过不少脚本呢。
这么简单了翻了翻, 小王找到了熟悉的感觉,自信也慢慢的来了: 看起来是一门新语言, 其实很多基本的思想、原理和工具都是想通的。
所以读起这本书来也没什么难的, 只需要把重点放到如何用TDD来做驱动开发就行了。
不光学习了TDD,还能顺便学习下Python, 确实不错。
讲这么一个小故事, 主要想说明一个程序员在工作中用到的基本的技术:单元测试, 功能测试 , 源码管理, 持续集成, MVC框架 等等,刚开始的时候需要认真的一点点的学,确实比较慢, 但是学的越多, 站的就越高,眼界就越宽,在学习编程的道路上好像有了加速度,越跑越快。最后发现即使面对一门新语言,也能轻松应对了。
这还只是在技能层面, 如果掌握了一些基本的思想和原理, 那对于新出现的技术也能很快理解,迅速的上手。
例如在Java里搞明白了异步调用的原理和Java 服务器端一个线程对应一个请求的弊端, 那当Node.js横空出世的时候,立刻就会明白它的本质了, 如果需要学习, 也会轻松很多。
所以不用羡慕别人用了什么热门的、时髦的技术,学习编程最忌讳的就是朝三暮四,对每个技术都浅尝辄止,那样就像一直坐在驴车上,一直都晃晃悠悠,慢的要死, 相反把基础打好,就相当于在打造汽车,飞机, 甚至有一天你发现像火箭一般蹿升了。
声明:原创文章,未经授权,禁止转载
你看到的只是冰山一角, 更多精彩文章,尽在“码农翻身” 微信公共号 , 回复“m” 或者“目录” 查看更多文章。
公共号:码农翻身
“码农翻身”公众号由工作15年的前IBM架构师创建,分享编程和职场的经验教训。