大家好,我是帅气小伙!纪念一下今天刚工作满一年,成为了一名web伪全栈,加上之前的Winform开发,Android开发,大半个伪全栈工程师终于养成了,离全栈还是有距离的。今天为大家分享的是一款idea插件开发过程,虽然是fork了别人的项目,在原基础上修改,但是我讲的不是如何去写代码,而是如果解决问题,我是怎么想的。
idea的翻译插件
1.悬浮框不能够复制内容:点击内容的时候,不能够选择,而且很快就消失了。
2.记录生词,全都是我会的单词,混在一起,不好整理了。
开发过程思路
对于任何开源项目,最关键的是让它能够跑起来。(废话!!!)
1.确定编程语言,选择合适的开发工具
java我选idea
2.导入项目,看代码结构,划分代码作用域
因为这个项目,功能比较单一,项目文件较少
理解开源项目,首先要跟着作者的思路走,一切从命名开始,因为面向对象的语言,从命名的规范来说,都是根据类的作用,用英文的动词或者名称描述的。
logger:日志输出
MarkDownProcessing:跟mardown有关的东西
ReciteWord:项目名称,一般跟项目名称差不多的类,基本上是程序的入口(经验)
RequestRunnable:请求线程
Translation:翻译
3.从功能感性的认知代码逻辑
代码逻辑实现了功能,功能体现了代码逻辑,这两者是相关的。
从项目的功能描述来看:我们了解到的基本情况是,选择XXX内容,调用有道翻译的接口,以markdown的形成存储生词。
我们再回看上述的类,它的代码逻辑,一目了然了吧。
4.确定项目运行方式,将它跑起来,要注意运行环境,一般开源项目都有声明的
由于项目是IDEA的插件,因为我以前也没接触过这方面的开发。查查资料就明白了,无非就是XXXX开发环境的搭建,放之四海皆准。
5.结合需求,合理分析变更位置
代码<->逻辑<->流程<->功能<->需求,这个是软件工程告诉我们的定律。
我们的需求很明确:不悬浮,不自动保存。
代码的流程也明确:选词->调接口->悬浮呈现->保存
代码逻辑:
怎么样调用获取IDEA所选词语
怎样调用有道翻译接口翻译指定词语
怎样让IDEA显示悬浮框
怎样用Java代码将文本保存到文件中
分析到这来,这个插件的代码已经不重要了,很显然,变更的位置是"悬浮呈现"这一环节
6.以最小的代价,实现需求
对于一个开源项目,你不是作者,在你不是很了解项目的情况下,尽量少改动。当然这个项目,经过一番分析,我已经很了解了。
那我把它去掉不就完事了吗?通过IDE的代码提示,我们尝试找到了几个方法,实现了可以复制,添加关闭按钮。
但是不能选择性保存,在通过IDE的代码提示查看这个组件的方法,似乎没有这么一个方法。
“选择性保存”,要实现这个功能,无非就是讲悬浮框,改成弹窗(以前做过winform开发,经验不解释)
现在问题叫变成了“怎样让IDEA显示弹窗”,由于之前没有接触过IDEA的插件开发,没关系,这种东西肯定有文档的(毕竟是大厂家,别人也做出来了),经过一番查找IDEA插件开发官方文档,之前曾经做过Android开发,弹窗是叫Dialog或者PopUpWindow的,所以我只要去搜索一下IDEA插件开发文档中,有带这些关键词的就可以了。
文档是这么写的
7.用最快的速度实现尝试性实践
我们不妨尝试性地去寻找,有关于IDEA DialogWrapper 的相关代码,找代码上哪里?
一般用这种方法,你可以找到很多东西,当你写代码,无从下手的时候,不妨尝试去GIthub找一下,运气好的话,都能找到的。
总结
学习他人的开源项目,对于提升自己的见识,很有帮助,这是一种主动学习的方式,这个4年的伪全栈,都是凭借这样的方式去学习的,希望我的方法对大家有帮助!