Hari Jiang's Mind Palace

About Blog Email Feed

31 Aug 2013
没想到还原度还挺高的

最近写了个markdown parser练手, 发现这种有规范的东西非常适合TDD, 照着markdown语法来写spec, 然后一个一个将其通过, 之前从未试过这么彻底的TDD

  1. 是写代码写的很爽时顾不上测试

  2. 是spec一定要事先定下,如果是创造性的编程, spec没法确定, 在代码和spec间来回改动就失去了TDD的意义

托TDD的福,写好各个语法的parse后跑了下GFM的source页,没想到还原度还挺高的 之后fix了几个小地方,parse的效果已经比较完善了,而且因为TDD 保证了测试的覆盖率(2k行左右的代码估计1k多都是spec),可以放心的修改代码,只要可以pass spec基本就是没问题的

之前一直感觉TDD有点名副其实, 经过这次实践感觉这种编程方式真的能帮助你写出可靠的代码

当然关键还是要事先确定spec, 如果不能确定spec我是绝不会用TDD的方式去开发的, 实际上我把minidown改成支持GFM时就改动了一些spec, 当然相应之前的所有代码也需要修改,相当于白写了一遍测试

benchmark了下各种markdown parser解析14000篇文章的效率

  • 跑在the ruby racer 上的marked大概3.8s可以完成
  • minidown 大概16s可以完成
  • maruku报错..
  • kramdown 大概200+s可以完成…(这货README里写着fast..)

后3种都是pure ruby的markdown parser

marked考虑到主要是前端使用,可能没有太多考虑效率,看得出ruby和v8差距还是挺大…

对于后边两个结果到是很惊讶, 没想到minidown在pure ruby的parser里还挺快的..


Til next time,
Hari Jiang 2013.08.31

avatar

About Blog Email Feed