本文主要是介绍fernflower思路记录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
思路
- 动态前缀
- 变量名中表达从根层次到当前层次的路径
- 化局部为全局:局部计数器变相成为全局计数器、 局部变量名防重器userNameSet变相成为全局的
实验
- 两处"var"分别改为不同的单词,以对比出这两处"var"对应哪里。(找出两处“var”对应java代码中位置)
两处"var"修改。结果:无varAtToJava,全部都是varAtGetFreeName。 代码链接
- 改为全局计数器的影响
改为全局计数器的影响: 全局计数效果只在标签语句上出现(比如 C001.java"label1136:",“continue label1136;”), 且有错误影响(比如 “Matcher var9” --> “C046 C046.this” )。代码链接
- VarNamesCollector.usedNames变为全局后的效果
VarNamesCollector.usedNames变为全局后的效果: 看起来很多名字都被改变了,改为全局有个副作用:this也被迫不能相同了
另外这种粗暴改法,很多名字都有很多个x。若要实际用此思路,还要细微调整的。代码链接
增强:全局usedNames 对应的全局usedIndexs,增强:this super 应该被 usedNames忽视。到这个地方,粗略看起来,很多变量名都是全局唯一了。 代码链接
这篇关于fernflower思路记录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!