阅读更多

5顶
0踩

编程语言

原创新闻 RFactor:让文本编辑器支持Ruby重构

2009-03-05 13:36 by 副主编 zly06 评论(0) 有2921人浏览

RFactor是一个Ruby gem,目的是为了在你喜爱的文本编辑器中提供自动重构的功能。难道我们没有支持重构的IDEs吗?当然有,但是RFactor的开发者Fabio Kung认为“大多数的Ruby开发者们不会去使用IDEs,而且文本编辑器已经很好了”。

自动重构并不是一个无足轻重的任务,它涉及到了很多复杂的行为,如分析源代码,以确定范围和用法。此外,还需要有一个好的战略,以确保修改的代码不会搞乱用户的格式。

现在,RFactor还很年轻,提供的方法有一定的局限性,它的目标是结合几个编辑器(主要是Textmate),提供简单的重构:

  • 提取方法
  • 提取变量
  • 提取类
  • 提取模块
  • 使用ack来重命名
  • 使用ack来移动


RFactor使用ruby_parser,用于提取ASTs。

 code = Rfactor::Code.new(CODE)
  new_code = code.extract_method :name => 'common_behavior',
      :start => 10,
      :end => 15
  # new_code should contain the changed code. The content between
  # lines 10 and 15 are extracted to the new method called common_behavior

 

消息来源:RFactor: Ruby Refactoring Support for Text Editors

5
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 枚举所有Windows所有窗口句柄并在Ctreelist控件显示

    敢问题解决的时候相当棘手   记录以备后用 解决思路  EnumWindows  EnumWindowsProc EnumChildWindows EnumChildProc在EnumWindowsProc 获得一个父(祖先)窗口后加入链表HwndList (元素由窗口句柄及其在Ctreelist中的位置组成) EnumChildProc 中查到一个窗口

  • DevExpress之TreeList构建

    //TreeList控件显示的数据一有变更,它就会刷新一次,BeginUnboundLoad()方法至EndUnboundLoad()中的代码对TreeList控件做出的更改不会使它刷新,已提升性能。 //如果不用BeginUnboundLoad()和EndUnboundLoad()的话,亲测5000节点耗时3秒,添加后100毫秒左右 this.treeList1.BeginUnboundLoad...

  • 自已反照TMS Software TreeList写的一个双表头树形列表控件源代码

    <br /> 前不久自已想写一个双表头树形列表控件但是代码有问题,先发在blog上在,等一后有时间了在慢慢的来看。<br /> <br />ChuTreeList.h :<br />//--------------------------------------------------------------------------- #ifndef ChuTreeListH #define ChuTreeListH //----------------------------------------

  • 【MFC】常用控件:树形控件Tree Control

    01、目录 文章目录01、目录02、树形控件简介03、树形控件的通知消息04、 树形控件的相关数据结构05、树形控件的创建06、CTreeCtrl类的主要成员函数07、树形控件的应用实例08、小结 02、树形控件简介 树形控件在Windows系统中是很常见的,例如资源管理器左侧的窗口中就有用来显示目录的树形视图。树形视图中以分层结构显示数据,每层的缩进不同,层次越低缩进越多。树形控件的节点一般都由标签和图标两部分组成,图标用来抽象的描述数据,能够使树形控件的层次关系更加清晰。 树形控件在插入新的树节点时

  • CTreeCtrl标签的编辑

    如果树形控件含有TVS_EDITLABELS样式,用户就可以直接编辑这个控件的项标签。用户可以通过点击项标签开始进行编辑,而程序通过使用EditLabel()成员函数开始进行编辑。当开始编辑、取消或完成时,树形控件就会发送一个通知消息。当编辑完成时,你需要响应更新项标签。 当标签编辑开始时,树形控件会发送一个TVN_BEGINLABELEDIT通知消息。通过处理这个消息,你可以允许一些标签可编辑...

  • 树形控件的重命名问题

    树控件在很多时候都可以用得到,本来觉得网上应该有很多资料,可以找个例子几行行代码就可以解决了的, 但是google了一下,关键字“树形控件 重命名”搜到的网页都不是我想要的,找了两个左右有用的网页看了一下,感觉都没有完全说清楚, 我决定先把必要的东西加上,然后边调边试,总算成功了,不说废话,看下面 首先加上树形控件的两个通知消息:TVN_BEGINLABELEDIT,TVN_

  • CTreeCtrl设置样式

    SetTreeStyle( CTreeCtrl* pTreeCtrl, DWORD dwStyle/*=TVS_HASLINES|TVS_LINESATROOT|TVS_HASBUTTONS|TVS_SINGLEEXPAND*/ ) { /* TVS_HASLINES 在父/子结点之间绘制连线 TVS_LINESATROOT 在根/子结点之间绘制连线 T

  • MFC CTreeCtrl TVN_SELCHANGED树节点切换事件

    1 在MessageMap中增加消息响应 BEGIN_MESSAGE_MAP(CMyStrategyUIView, CView)     ON_NOTIFY_REFLECT(TVN_SELCHANGED, &amp;amp;CTreeCtrlBT::OnTvnSelchanged)//这种情况是当前类继承了Ctreectrl时的声明方式 ON_NOTIFY(TVN_SELCHANGED, IDD_CA...

  • 可编辑子项的CListCtrl类

     大家都知道在MFC中通过给CListCtrl设置LVS_EDITLABELS属性,并且在程序中响应控件的LVN_ENDLABELEDIT消息可以修改列表控件每一行的第一项,也就是主项(Item)。 void CEditListCtrlSampleDlg::OnEndlabeleditList1(NMHDR* pNMHDR, LRESULT* pResult) { LV_DIS

Global site tag (gtag.js) - Google Analytics