2022Flag(2)-CodeFomater格式化工具开发心得

18 篇文章 0 订阅

前言:
从事编程也有几年, 想给自己写一些小工具, 决定设计一个格式化工具. 按照读过的设计之类的书籍,完整的自己动手设计一下

1.需求

写这个工具的时候就想到以下几点
在这里插入图片描述

2.实现调研

  • json格式化 :jackson
  • sql格式化: druid
    当掌握了实现的可能性之后,就准备入手

3. 需求分析

把需求语言,细致的梳理一下
在这里插入图片描述

4. 类设计

4.1 service层设计

![在这里插入图片描述](https://img-blog.csdnimg.cn/3f7afcd7a9f24e6f99845eb7ee12736f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGl2ZW5vdy1q,size_17,color_FFFFFF,t_70,g_se,x_16

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.

  • 为什么重复造轮子? 一千个读者心中有一千个哈姆雷特, 即使很烂, 那也是自己的烂番茄 !

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值