我是一名Java程序员,一年前开始编写Ruby on Rails编程。我喜欢语言,轨道本身及其背后的原则。但困扰我的是Ruby程序员似乎没有重构。
我注意到在Ruby / Rails中重构的工具很少。一些IDE,比如Aptana和RubyMine似乎提供了一些非常基本的重构,但与Eclipse的Java重构相比没有什么大的。
然后还有另外一个事实:大多数railers(甚至是专业人士)更喜欢一些轻量级的编辑器,比如VIM或TextMate,而不是IDE。好吧,使用这些工具,您只需获得零重构(只有带有查找/替换的正则表达式)。
这给我的印象是rails程序员不重构。当然,这可能只是一种错误的印象,但我想听听专业人士在轨道上使用红宝石的意见。
你重构吗?如果你这样做,你怎么做,使用哪些工具?如果没有,为什么不呢?
答案 0 :(得分:19)
构建Java更实用的IDE
Java严格的输入和记录的语法使得编写语言解析IDE工具成为可能
Ruby的鸭子打字和Yacc源语法记录使得这很难做到。
Java更需要IDE
Java的冗长使代码编写和代码重写工具变得可取。
Ruby极其简洁的性质与典型的无类型声明相结合(当然它们与Type.new
一起显示内联)使这些事情变得可选。
合并两个......
因此,非常难以编写与实际上并不需要的组合会导致平衡倾向,有利于人们最喜欢的编辑。
为IDE放弃vi(1)是我不想做的事情,但是我使用Java,因为我需要IDE来编写我的接口实现等,而且它解析Java的事实使得它在代码中很有用完成。因为使用Ruby它不能,我也不需要它,我坚持使用vi(1)和TextMate。
的摘要强> 的
由于您没有埋没在代码中,因此可以通过一些合理的编辑来重构。但是在关于“其他Ruby开发人员”的主题时,我的Ruby问题是:为什么每个人(除了我似乎)都使用函数parens?因为在几个百分比的情况下他们是需要的,所以“不一致”是令人不安的?
答案 1 :(得分:8)
是。
大多数Rails程序员首先尝试并遵循测试,编写代码以通过测试,然后在进行下一次测试之前重构代码。
所有的铁轨/红宝石程序员......可能都没有,但就这个社区的“氛围”或“感觉”而言,我会说这是一种鼓吹和实践的东西,它发生的次数比不是
没有必要使用IDE。对于Ruby和大多数rails程序员来说,VIM,emacs和/或textmate就足够了。我想Java需要更多的编译或者其他东西,但我对此有何了解,因为我只用Ruby编程。为什么所有Java程序员都使用IDE(因为我正在推广)。
答案 2 :(得分:6)
RoR开发人员做重构很多。但最重要的是,他们这样做是因为他们可以轻松地做到这一点。
如果你遵守RoR的主要原则 - 不要重复自己 - 并花了一些时间在代码设计上(这意味着你没有碰巧创建一大块单片代码),没有什么可以阻止你重写一个一段代码,无论你想到什么(概括,加速,提高可读性等)。 Rails的内置测试/基准测试/性能分析功能可以帮助您检查是否实现了目标,同时又不牺牲已有的和正常运行的功能。
编辑器完全独立于代码,因此您甚至可以使用记事本进行编码(我不是命令行狂热者,我更喜欢像Gedit这样的'图形'编辑器。)
答案 3 :(得分:2)
在Java和Ruby上花了很多时间(最近有很多来自Eclipse和来自Textmate的来回)我同意Ruby中某些类型的重构更难。对于Ruby来说,这不是因为静态类型与动态类型以及为动态语言编写重构工具的难度而导致的较差的结果。在很大程度上,手动/正则表达式驱动的重构在Ruby中比在Java中更容易,因为Ruby代码的简洁性 - 它只是更少 - 但是,重命名方法的简单方法并不那么简单。 Ruby就像Java一样。到目前为止,Ruby与Java的好处(imo)更大(你只需要在生产中使用Ruby几个月就可以真正感受到你会喜欢它多少),但一个缺点是缺乏与IDEA和Eclipse等工具相同的强大重构。
编辑:只是要明确一点 - 我不会在Ruby本身做任何比Java更少的重构,但似乎我对Ruby的需要更少。但是当我这样做时,我依赖于单元测试而不是像Java那样的编译器。