JetBrains Idea 的 SQLFormatter 格式化插件,比内置更好用(完爆),想你所见

322 天前
 petercaogx

这两年网上铺天盖地都是互联网大厂裁员的消息,终于我也加入了被裁行列。静下来想想,在原公司也很多年了,换个工作看看新环境也不是坏事,一个地方待太久容易 变成坐井观天。新入职的一家公司是做企业管理软件的公司, 这和我之前做互联网电商的公司还真是很有点不一样。刚刚开始工作,很明显的感觉到就是程序使用的 sql 变得复杂了很多。管理软件的 sql 真的是大篇幅,200 行起步的样子,长的能到 2000 行,看着头皮发麻。电商程序的 sql 就简单很多了,单表的不用自己写 sql ,稍微复 杂点的也是百行之内能搞定。不过这点问题怎么能难倒久经沙场的我,只要 sql 格式写的漂亮,慢慢看还是能将就看下去。迅速 idea 内置格式化走起,按 ctrl+alt+L:

结果令我意外,本来还可以看的 sql ,被我一格式化成这样了,简直看不下去了,大片的空行,莫名其妙的代码块偏移(缩进),每行有效语句量太少,行数暴增,这肯 定不行呢! Idea 格式化成这个样子,只能拿到数据库管理软件中去格式化了,我一般支持正版,平时用 DBeaver 开源免费的软件,那就走起。

这个一眼看上去就舒服多了,case 这部分能看出一块一块的结构了,这样的话逻辑要清晰很多。可是,,当我向下翻了一些,看到了这样的内容:

在这一块的格式化中,有大量的 and 、or 运算,函数和括号对,语句的风格立马就变的有点像 idea 中的一样了,行太短,没有完整分块的语义,很难理解这些语句在干 什么了,即使使劲看清楚了一两行,等你去看下一节的时候,上一节又找不到在什么地方开始、什么地方结束了。特别是,你正看的聚精会神,傍边座位的混子推一下你 说:“你看抖音上这个视频真的很好笑哟,逗逼的很!”,这样,等你应付完回来,,又得重新开始分析这个 Sql 。只想说一句:“我是谁,我在哪?”。

平时用的这两招解决不了大篇幅 Sql 的问题,那就还得第三招,程咬金还有三板斧呢,我不能就两招就投隆了吧,idea 有插件,去找插件去,如果在 idea 里面能找到符 合品味的插件那不是比在数据库管理软件中要方便很多么!说干就干,插件搜索“sql format”看看哪个插件用的人多,评分高,就先搞下来试试!
当我输入到 sqlf 的时候,市场里面就只剩三个条目了,这出呼我的意料,我本以为有很多类似的插件,但实际情况是只有三个,并且有两个还是一样的名字,一个免费 一个收费。算了,我就先试一试“SQLFormatter”这个吧,看上去名字很匹配。如图第一个,是我写这个文档的时候已经安装过了的样子,插件已经更新了,看来这个 插件还在很活跃更新中,这是好事啊! 先看看格式化出来的样子:

和前面两个工具格式化出来的比较,最前面的部分分块清晰,下在面的部分明显紧凑了,大量的 and 、or 运算被安排在一行里面,这样一次能看完一个逻辑结果,不会出 现频繁的换行。太频繁的换行,感觉就像听人说话一句话没说完,就换成了下一句。这个基本上是符合我了的风格。语句类似、重复的部分该成块的要成块,简单又很多 的运算成行,一次能看完一个逻辑,行数不会太多,已经基本可用了,程序员的要求可是很高哟! 顺便提一下,安装好插件后如图这样使用,在需要格式化处右键,选最下面一个“format sql”。 接下来,我再从项目里面找几个 sql 来试试这插件吧,如果大部分都能和我想到一块去,那以后就是这个插件了,不用再打新的主义了。以下图截图左边是 idea 内置的格 式化,右边是 SQLFormatter 的格式化,我还是对比放出来看一下,虽然内置的格式化已经被我否认掉了,奈何内置的有更多用户,与内置比较最有说服力 ,还是比较 比较吧!
这次内置格式化 出来的效果与 SQLFormatter 插件效果相差不大,有两点区别:1 ,内置格式化缩进大些,SQLFormatter 插件缩进小些。2 ,内置插件试图作 as 字段名的全局对齐, 但是实际上因为行宽的限制后来又放弃了对齐,SQLFormatter 插件把 as 字段名换行处理,行宽足够的留在了同一行上。其实可以看到,我特意把内置格式化那边的窗 口拉大了一些,因为不拉大字段名显示不出来,截图的时候您看不见,使用的时候我也看不见,有点鸡肋,需要左右滑动窗口。
这次格式化缩进差异就更明显了,缩进给人的感觉已经不是“缩进”了,反面而有点混乱。
这个图您一眼看上去不像是同一个 sql 的格式化吧,,我认真的告诉您,其实这是同一个 sql 的格式化,注意左边窗口的底部横向滚动条,你就能明白了。内置的格式化 没有对第一行中的 select 字段名换行,而这个查询的字段有超多,所以内置格式化的第一行很长,SQLFormatter 对查询字段进行了换行对齐,很棒。横向滚动一下看 看下图,第一行的后面还有很长呢! 再贴一次格式化对比图 这个我就不再一一解释对比了,其实和上面的差不多,都在缩进,换行上面的异常。 格式化这件事,应该比较的就是缩进与换行的功夫了吧!

写到最后,还是官宣一下,SQLFormatter 这个格式化的工具我还是比较满意了,以后就选它了。其它吧,这个工具还有优化点,截图是也有一处,我去给作者反馈去,慢慢演进吧! 新找的工作不容易,我还是少做一些与老板无关的工作,赶紧存个草稿,起身看看谁需要帮忙吧,我去跑个龙套。

3680 次点击
所在节点    程序员
23 条回复
petercaogx
316 天前
@haimianbihdata 新版本你试了吗?好了吗?
haimianbihdata
316 天前
idea 还在审核吧。我看插件还没上更新。作者修复了我的问题。感谢
petercaogx
314 天前
@Vegetable ssl 证书搞好了,但这个文章改不了了,我新发了一篇英文的,
https://www.v2ex.com/t/1015824

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1015039

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX