Intellij IDEA – Refactor 重构


SublimeText2 的多重选择

查找替换与重构的区别就像 重写代码和网页重构的区别一样

(网页重构 WebRebuilder 是腾讯的一个职位,主要工作职责是 HTML CSS ,鲜有人搞得离清)

SublimeText2 有一个大卖点是多重选择,让人眼前一亮

之前需要通过查找替换来搞定的操作,只需要鼠标点选几个区域,就可以批量操作

简直是列编辑的 God Like 模式, 碉堡了有木有?

 

Intellij IDEA 的 Refactor 重构

很可惜 Intellij IDEA 没有这个功能,但是他有着很屌的 Refactor 重构功能

举一个栗子:

3个文档里有各种关键词 bigcat

类型为 纯文本,文件名, CSS class 名, JavaScript 变量名

尝试下如何 Refactor 重构

先拿 CSS class 开刀,我们右键选择 Refactor > Rename (快捷键 Shift + F6)

输入 damao

发现在 html 里的重构会自动更改到关联的 css 里的 class 名,

因为,在 html 里引用了这个 CSS 之后,他们就绑定在了一起, 是真爱!

同理重构其他东东

重构 JavaScript 变量名/函数名 会同步修改关联的 .js 文件里对应的部分

重构 .js 文件里的变量名/函数名会同步修改关联的 html 页面引用

重构 .js / .css 等文件名也会同步修改关联的 html 页面引用

甚至重构 html 代码里 href=”bigcat.css” 会同步修改对应的文件名

在本例中如果你要用查找替换,或多重选择,看起来都不是个好办法

而改名只是重构的一部分,还能抽离出来新建函数等等需要你去挖掘

纯文本不可重构

对于纯文本,我们只能用正则或普通替换或列编辑来处理了

列编辑

按住 alt 鼠标选择一列,然后输入文字就会多行同时出现

整齐的连续单行代码中比较适合用,缺点是必须要连续

正则表达式

例如略微有点技术含量的正则

搜索>后面的bigcat

然后把cat之外的替换为da

Intellij IDEA 依然贴心的把替换结果提示出来

优点,能想出来就能搞出来

缺点,需要正则表达式30分钟入门

结论

所以不要因为莫言有个错别字,就认为他文字功底差


《 “Intellij IDEA – Refactor 重构” 》 有 24 条评论

    • @大发 工作内容是 HTML CSS 但是不会 JS 的重构是写不好 HTML 的.主要不缺会JS 的重构,所以你不会的话会没啥竞争力…

  1. 大猫,能请教下你吗?
    这两段代码如何能合并成一条?

    (1)第一段是使用Lazyload 图片延迟加载效果,但是图片的尺寸总是显示不完整,会被裁剪。
    <img class="lazyload" src="image->blank($w,$h) ?>” data-original=”” />

    (2)第二段是自定义图片的长和宽,使图片不会被裁剪。
    <img src="image->resizedImgUrl($item->img,1980,1024); ?>” alt=”” title=”” />

    如果想使用“Lazyload 图片延迟加载效果”的同时“自定义图片的长和宽”,这两段代码应该怎么合并才可以?

    因为如果同时输入这两段代码,会造成同时加载两张照片,一张是被裁剪到的,一张是没被裁剪到的。

    • @Andy 尝试用css控制宽高,lazyload 貌似是onload了img之后取到原始宽高的
      或者你给我url我看看,这样没法YY出来场景

      • @bigCat 哈哈,已经解决了,后来发现合并成这样就可以了。谢谢大猫<img class="lazyload" data-original="” src=”image->resizedImgUrl($item->img,1980,1024); ?>” alt=”” title=”” />

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注