重构

增加了一个循环模式，并对主程序进行了重构。

原来的版本有点过度封装的感觉，很多方法只调用一次，用一个局部变量就可以替代的，我删除了很多不必要的方法，最终根据结果的种类设置几个方法，返回都是几行的数组，然后把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