使用IntelliCode轻松进行代码重构

使用IntelliCode轻松进行代码重构

作者:HQ |  时间:2019-09-08 |  浏览:75 |  评论已关闭 条评论

开发者朋友,先来一个直击灵魂深处的拷问
你是否曾经不厌其烦的对不同地方的代码进行相同的重构?
你可能会说,这些都不是事儿,哥先一条正则来上个解决方案级搜索,然后再来个替换全部,岂不是美滋滋?

问题是:机器更擅长做这事儿
诚然,上述方法,可谓是一顿操作猛如虎。

手工方式重构代码,确实是一件很容易做的事情,敲敲手指头就可以完成,我也经常这样。

但是,如果:
1) 需要重构的地方很多
2) 碰巧是一个大型工程

那么,手工重构将会来带来:
1) 耗费时间和精力,以及你的元气(我一身才学,天天就干这档子破事儿?)
2) 滋生错误。大型工程内部组件交互复杂,盘根错节,一不小心就会因为没有考虑周全而掉沟里。

来了,它叫IntelliCode
有想过吗?

如果一个开发IDE能追踪你的编辑活动并从中学习你的修改模式,比如,它发现你在重复性地做相同的代码改动。当你做了几次后,IDE终于学会了。

这时它就会问你:要不然,这种重复性的代码改动,交给我?

在最新版本的VS2019 v16.3 Preview 3中,开发团队宣布对代码重构进行了强化,我们可以叫它:IntelliCode。
IntelliCode可以智能的察觉重复性的代码改动并智能化地给出建议,开发者如果接受建议,则IDE会自动根据之前匹配的改动模式,进行自动化代码重构。

废话不多说,直接上视频

在上面的视频中,我们看到,当我们做同一个代码改动两次时,IntelliCode将会自动学习到这种改动模式,并在列表中给出修改建议,帮助你完成相同的重复动作。

试试看
请注意,重构只是IntelliCode中的一个预览特性,在VS2019 v16.3 Preview 3中,它默认情况是关闭的。我们可以在VS中的设置页面打开,具体路径为:工具 – 选项 – 搜索IntelliCode – Preview features – C# IntelliCode Refactorings,将它修改为Enabled即可。

做了如上的修改后,需要重新启动VS才能生效。

工作原理
从底层实现原理上来说,IntelliCode将会观察你的每次代码改动。它使用的是一种名为PROSE(PROgram Synthesis by Example)的方式来汇总你对代码的改动,使用脚本的方式记录了你的代码”改动前”到”改动后”的过程。当IntelliCode发现,在代码的其他位置可以应用这个代码改动脚本时,它将在需要重构的代码的位置进行高亮提示。点击提示,开发者可以选择应用或者不应用这个重构建议。这项技术说起来,还是有点复杂的。有兴趣的朋友,可以参考Excel’s Flash Fill Feature。更多的细节信息,将会在OOPSLA 2019大会上进行公开。

我不禁要问了:这个,看起来,不就是普通的代码查找和替换吗?
并不是。
IntelliCode不是简单地追踪你的代码改动并进行文本替换,而是,它能感知到你的代码的语法结构。这个有点不简单了,为什么?它能侦测到某些和初始代码改动不一样的微小变化(例如,只是变量名变了)而本质的语法结构没有发生变化的情况。(这句有点长啊,你可能需要点时间淆一淆)

上图:太难不看版

There is always another option
当然了,如果IntelliCode给出的重构建议,你觉得没什么大作用,你可以直接选择忽略它,那么之后它就不会再来烦你了,除非你重新再创建它。

总结
IntelliCode的重构特性,看起来确实是不错,但还待进一步的实际体验。
啥时候,能出个C++版本的就好了。

评论已关闭。