背景
由于某种原因,也许是代码 Review 不善,也许是沟通太少,也许是开发人员代码规范意识不够,一个由很多人员协同开发的 Java 大项目下的子项目包名命名方式出现了好几种流派。假设 GroupID 为com.java
,ArtifactID 为xxx
,子项目里包命名至少出现了以下三种不同流派:com.Java.xxx
、com.java.xxx
、com.llx.xxx
。Java 是不建议包名出现大写字母的,但偏偏这个大项目建立伊始的时候,负责人大笔一挥,GroupID 写成了com.Java
这副鬼样子。槽点太多,竟不知从何说起。
问题
导致的问题:一些工具类无法愉快的进行共享了,com.Java
和com.java
是两个完全不同的包,我主要在 Windows 下进行开发,但是 Windows 的文件系统不区分文件夹和文件的大小写,例如Java
文件夹和java
文件夹是不能共存的,它会在你创建的时候询问是否将这两个文件夹合并。问题来了,跨平台系统的文件系统该如何抉择呢?典型的例子就是 Git 还有 Java 的包管理,Linux 是严格区分文件夹大小写的。配合 Spring Boot 令人窒息的组件扫描,每次调用其它模块的工具类,为注入 Bean 该选择哪个包的事情都得伤半天脑筋,感觉自己陷入了一个漩涡,心累啊。
1
sutra 2019-05-19 16:15:02 +08:00
试试这个让 Windows 也区分大小写 https://blog.walterlv.com/post/case-sensitive-in-windows-file-system.html
|
3
Ultraman 2019-05-19 16:19:31 +08:00 via Android 4
|
5
LokiSharp 2019-05-19 19:26:47 +08:00 via iPhone
重构改个包名不难吧?
|
6
719465553 2019-05-19 19:36:07 +08:00
见过 com.UI, class a_b,list.add(null);for(int i = 1;;)一堆坑的路过
|
7
boris1993 2019-05-19 19:36:21 +08:00 via Android
@LokiSharp #5 虽然这么说有点懒政的意味,但是
改出问题你负责?你打包票改完肯定不影响原有表现? |
8
kassadin 2019-05-19 20:44:00 +08:00
按说有发帖的时间就够改完了,ide rename move 都是无痛的。
怕出问题就单文件分批次操作,能出问题也就是反射、配置、maven、混淆类的字符串,业务参数总不会带包名类名还区分大小写吧。 |
9
xuanbg 2019-05-19 21:37:39 +08:00
改个包名还会出问题?在路径中批量查找替换,分分钟搞定。
|
11
wangyongbo 2019-05-19 23:07:50 +08:00 1
我司的安卓工程师,把 APP 的包名用 com.android 开头,导致无法上架 google play。
|
12
NeinChn 2019-05-19 23:54:40 +08:00
如果你的包名是在 rpc client 里面,然后给其他几十甚至上百个外部团队用的
这种时候你还敢随便改包名么 又不是所有应用都是简单的单 server 应用 万一有人基于包名做反射,做 SPI,改包名没改彻底就是作大死.... |
13
Leiothrix OP @LokiSharp 现在的问题是不敢去动那些在线上跑的东西,而且模块太多,上千个类需要修改成统一的规范凭我一个人去推动怕是做不到。我尝试过用 IDEA 去批量更改包名,最后以放弃告终,明天问问主管这东西改不改吧。
|
14
boris1993 2019-05-20 00:10:35 +08:00 via Android
@LokiSharp #9 前年,所谓”负责 QA ”的人,亲口告诉我,我们时间很紧的,没有时间预留去写单元测试
我知道,很操蛋。我当时也差点吐血。 但是,对于一个开发流程是先闷头写代码,文档最后补的公司,你又能期望什么呢。 就算不考虑这些,通常来说,我也不想去碰不是我写的东西,因为我真的没把握不出问题。一旦出了问题,那就是我的锅。 |
15
Leiothrix OP @kassadin 上千个类,十几个不同功能的子项目,每个项目负责人都不同,IDE 还没智能到可以联动所有不同项目的包名一起修改。对了,还掺杂了很多 RPC 调用……
|
18
zwh2698 2019-05-20 00:34:34 +08:00 via Android
Java 的重构工具很牛逼,兄弟你不能让工具闲着。创建项目的那个傻子,一定没有丰富的多平台经验。所以你不要闲着了,受个累,让大家都爽一下
|
19
iamdqncoder 2019-05-20 01:09:28 +08:00 via Android
前人挖坑,后人跳坑
|
20
dengtongcai 2019-05-20 09:03:33 +08:00 via iPhone
规范就是小写啊
|
21
didikee 2019-05-20 09:09:41 +08:00 via Android
@wangyongbo 😂这个前缀开头的是安卓系统内部应用
|
22
unco020511 2019-05-20 18:07:30 +08:00
最怕这种,每次导包时候我还得想半天
|