最近接手了公司的一个 Rails 项目,发现这个项目的 Controllers 有 3118 行,而 Models 有 1762 行,也没有 Service 之类的分层。 我在摸清楚这套项目的业务逻辑的同时,也发现这里面的代码有各种不科学,所以问题来了:是重构,还是推倒重写?(时间相对充裕)
我第一次遇到这样的事情,没有太多相关经验,求指点迷津。
too young too simple,这是我维护过的 application,看 controller 行数 model 行数 和 code to test rational
| Name | Lines | LOC | Classes | Methods | M/C | LOC/M | +----------------------+-------+-------+---------+---------+-----+-------+ | Controllers | 3424 | 2635 | 38 | 321 | 8 | 6 | | Helpers | 543 | 535 | 0 | 6 | 0 | 87 | | Models | 351 | 257 | 30 | 8 | 0 | 30 | | Mailers | 0 | 0 | 0 | 0 | 0 | 0 | | Javascripts | 13629 | 8412 | 0 | 711 | 0 | 9 |
我现在的项目,测试比较惨,就不贴了…… 重构是为了更低成本地持续改进项目,而不是为了更优美的结构。如果你 自信已经搞懂了项目已有功能,并且有更好的办法让未来的功能实现起来更轻松 ,就小块小块地重构。不然碰到新功能或者要修复 bug,就只能沿用已有代码的逻辑,不停的打补丁,最后可维护性会越来越差。
+----------------------+-------+-------+---------+---------+-----+-------+
| Name | Lines | LOC | Classes | Methods | M/C | LOC/M |
+----------------------+-------+-------+---------+---------+-----+-------+
| Controllers | 2523 | 2010 | 50 | 263 | 5 | 5 |
| Helpers | 35 | 31 | 0 | 5 | 0 | 4 |
| Models | 2537 | 1938 | 39 | 197 | 5 | 7 |
| Mailers | 175 | 141 | 8 | 24 | 3 | 3 |
| Javascripts | 18302 | 13417 | 0 | 1995 | 0 | 4 |
代码的总行数不重要,关键是代码结构是否足够清晰,架构好的项目即使功能再多也易于维护
+----------------------+-------+-------+---------+---------+-----+-------+
| Name | Lines | LOC | Classes | Methods | M/C | LOC/M |
+----------------------+-------+-------+---------+---------+-----+-------+
| Controllers | 47826 | 19878 | 364 | 1836 | 5 | 8 |
| Helpers | 196 | 165 | 0 | 17 | 0 | 7 |
| Models | 15133 | 10429 | 289 | 643 | 2 | 14 |
| Libraries | 1216 | 1003 | 29 | 65 | 2 | 13 |
+----------------------+-------+-------+---------+---------+-----+-------+
| Total | 64371 | 31475 | 682 | 2561 | 3 | 10 |
+----------------------+-------+-------+---------+---------+-----+-------+
@billy @jimrokliu @cuterxy @darkbaby123 感谢各位提供宝贵意见,我确实没有足够的把握直接重构,那就分小块来做吧,首先要弄好测试,嗯嗯。