前言:
从事编程也有几年, 想给自己写一些小工具, 决定设计一个格式化工具. 按照读过的设计之类的书籍,完整的自己动手设计一下
1.需求
写这个工具的时候就想到以下几点
2.实现调研
- json格式化 :jackson
- sql格式化: druid
当掌握了实现的可能性之后,就准备入手
3. 需求分析
把需求语言,细致的梳理一下
4. 类设计
4.1 service层设计
4.2 viewer层设计
5. 实现
5.1 service层实现
service层实现比较简单, 但是发现距离初始设计不合理 ,应该加入一个FormatterFactory 才可以轻松构建 针对Mysql的SqlFormatter
完成测试用例, 测试期望的结果
5.2 视图层实现
采用swing java方式构建 , 如果用typescript 写思路大致相当.
实际的实现的类图 (idea-diagrams),
5.3 实现功能点
-
ErrorTip 定位错误发生的位置 ,弹出错误消息框 ,实现对错误的翻译功能
-
AbstractCommonToolbar 实现格式化成功后的, 主题 及复制功能
-
JsonDefineToolBar 实现格式化为json时 的 图标和工具按钮
- MysqlDefineToolBar 实现格式化为Mysql时的图标 , 可扩充工具按钮
6 CodeFormater 工具Gif
后话:
代码不具备复用性,因为依赖好多基础小组件 , 如果想用swing实现的话 ,有许多细节的UI操作 比如就像 边框按钮, 发光按钮, 构建图标, 提示消息, 包括默认继承视图AbstractMigView (必须指定MigLayout整体布局的)一个快捷抽象类, 了解rsyntaxtextarea 编辑器的使用.
-
但是如果用react /vue 实现的话 , 除了没有接口约定 (IDE的静态检查) 思路基本相同 ,当然加入typescript 那可以是一种体验 . 不过像一些框架 element ui ,antd 已经提供了丰富的组件, 比如model ,message ,或者还可以npm install一些代码编辑器codemirror ace.
-
为什么重复造轮子? 一千个读者心中有一千个哈姆雷特, 即使很烂, 那也是自己的烂番茄 !