會寫這篇文章的初衷是因為公司當初聘請我最重要的任務就是把網站從 Rails 2.3 升級到 Rails 3.2 並且把整個網站重構。公司網站的規模大概落在 40~50 個 controller 和 model 上下,說大不大說小不小。在整理的過程中,看到了各式各樣慘不忍睹甚至令人噁心的程式碼,加上完全沒有 spec 或 document 的狀況下,導致我必須不斷去揣摩、拆解當初原作者這段程式的想法,同時,還必須靠"想像"原本的 Spec 重新寫出好維護的程式碼。回憶起這段不堪回首的往事真的是非常辛苦,但在把後端整理到可以維護的狀況和把前端的工作切割拋出去給 F2E 以後,回頭想想收穫也不少。所以想藉由這次的經驗做點記錄與分享。
因為有不少範例,不想花時間重新格式化,所以有興趣的朋友請直接點連結閱讀:
http://blog.hellolucky.info/articles/ruby-on-rails-refactoring-experience-talk/
我觉得可以改进的有
如果有 40~50 个 controller,我觉得是无比巨大了,可以考虑用 rails engine 切分,或 sub domain / sub web project 切分。 F2E
是啥意思?
文档就算了,没有 Project Leader 推动和检查,按国人的习惯,一般都是没有,即使有也很难与代码同步,就连老外也是一样,有注释已经是运气不错了。
其實前兩點我一直猶豫要不要擺上去,但其實我是持反向意見!
減少代碼是好事,但卻增加了維護的困擾,怎麼說呢?HAML 和 CoffeeScript 跟 SCSS 相比,學習門檻較高,沒有辦法無痛上手,加上 F2E 或設計師有很高的機率不會寫 HAML 和 CoffeeScript,有可能因此造成溝通上的困難。除非公司所有 Team member 都會寫且可以確保新進員工有足夠時間可以學習,那我覺得選擇 HAML 和 CoffeeScript 就是件好事。
( F2E = Front End Engineer )
會選擇 handlebars + handlebars_assets 的主要原因:
這算是我研究非常多款 template 唯一符合要求的。不過當然還是有些缺點:
JS 和 SASS 文章的部份容許我腦袋清醒一點的時候在閱讀 XD
以上是我一點想法,希望可以激發更多討論 :)
我们也是从 0 开始的,HAML 和 SASS 都是强硬推下去,效果好。因为上手后大家都喜欢这玩意。至于上不上,这依据团队的情况和项目的需要吧,没有绝对的。