摘要: 原文发表于2014-09-13。 现代对象设计主张“组合优于继承”。总之无论组合还是继承,对象都成了涉及多个类的复合结构。 “对象的有效范围”,是指对象从创建到丢弃(不再引用)的这段时间,不包括等待被GC销毁的时间。可以近似认为是对象的生命期。 单例对象(Singleton)的有效范围几乎是整个应用 阅读全文
posted @ 2020-12-25 17:23 计算法 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 原文发表于2014-09-10。 前段时间知乎上有人发了这么个段子: 某日,老师在课堂上想考考学生们的智商,就问一个男孩: “树上有十只鸟,开枪打死一只,还剩几只?” 男孩反问:“是无声手枪,还是其他没有声音的枪么?” “不是.” “枪声有多大?” “80~100分贝.” “那就是说会震的耳朵疼?” 阅读全文
posted @ 2020-12-25 17:21 计算法 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 原文发表于2015-05-14。 最后再啰嗦一篇吧,分享些宏观经验,供需要做类似事情的人参考。 技术示例在前篇! 伸手党绕行! 大规模系统重构,不可避免要触到各个团队/模块的很多代码,很可能破坏功能,到时候你就成众矢之的了,tickets扑面而来,到处灭火。 怎么确保不破坏功能呢?就要做安全重构。( 阅读全文
posted @ 2020-12-25 17:20 计算法 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 原文发表于2015-04-24。 本系列临近尾声,科技树到此点满。 语法分析主要用库解决了,代码变成了一棵树,但是变量类型,方法签名之类的东东都不清楚。 如果做IDE插件,可以享受IDE的语义分析能力。为了让程序独立运行,我自己按需实现了语义分析。(更新:JDK已提供可观的编译器API,也可以使用, 阅读全文
posted @ 2020-12-25 17:19 计算法 阅读(364) 评论(0) 推荐(0) 编辑
摘要: Java代码分析器(四): 代码改写技术 一般的工具只能分析代码,不能改变代码,除了IDE的重构功能。但我们还是有办法实现的。 不想让黑科技失传,趁着Java 7还在广泛使用,赶紧写下来(可能无法支持Java 8)。(更新:已支持Java8) 这个小框架让你看文章前就能上手,快速对代码库做分析/改写 阅读全文
posted @ 2020-12-25 17:15 计算法 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 原文发表于2015-02-05。 上篇介绍的形形色色的语法元素大概让人眼花缭乱了,而且每种元素都对应一个Java类。知道是一回事,使用就是另一回事了,这么多个类,要给每个类写对应的处理代码,不胜其烦。ASTVisitor虽然能自动遍历语法树,但是并不能帮你处理每一种结点。 好在JDT提供了更加抽象的 阅读全文
posted @ 2020-12-25 17:14 计算法 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 原文发表于2014-09-07。 上篇博客末尾提到了一棵抽象语法树长什么样子。JDT提供了一套DOM API来让我们顺利地控制这样一棵树。 读完本篇后请继续完成上篇的延伸阅读:http://help.eclipse.org/ 点击JDT Plug-in User Guide → Programmer 阅读全文
posted @ 2020-12-25 17:11 计算法 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 原文发表于2014-07-17。 这是一个关于抽象语法树(Abstract Syntax Tree, AST)的故事。 抽象语法树是对程序代码的结构化表示,是对代码进行词法分析、语法分析后得到的产物。编译器要用到它,很多生产力工具也要用它,例如: IDE可以自动重构、自动生成一些代码、自动对不规范代 阅读全文
posted @ 2020-12-25 17:09 计算法 阅读(274) 评论(0) 推荐(0) 编辑