dd1994/fy — pull request #3 by CicholGricenchos (2014-12-27 02:38:23+00:00)
Title: 重构

增加了一个循环模式，并对主程序进行了重构。

原来的版本有点过度封装的感觉，很多方法只调用一次，用一个局部变量就可以替代的，我删除了很多不必要的方法，最终根据结果的种类设置几个方法，返回都是几行的数组，然后把puts 挪到外面。

原版还有一个问题是没有缓存查询结果，查询过程中对result_json存在很多递归调用，导致短时间内发出大量请求。在一个查询开始前设置一下TracePoint去追踪这个方法调用：
```ruby
TracePoint.trace(:call) do |tp|
p 'query called' if tp.method_id == :result_json
end
```
输出是
```
"query called"
"query called"
"query called"
"query called"
test [ test ]

"query called"
"query called"
"query called"
- n. 试验；检验
- vt. 试验；测试
- vi. 试验；测试
- n. (Test)人名；(英)特斯特

"query called"
"query called"
1. test
测试, 试验, 检验
2. test Engineer
测试工程师, 测试员, 软件测试工程师
3. hardness test
硬度试验, 硬度测试, 硬度实验
```
可以看到一次查询中调用了9次result_json，也就是发出了9次HTTP请求，我把一个result_hash作为实例变量存了起来，查询速度快了一点。

最后加了个小版本号XD