V2EX = way to explore V2EX 是一个关于分享和探索的地方
Sign Up Now For Existing Member Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
This topic created in 2535 days ago, the information mentioned may be changed or developed.
背景
由于某种原因,也许是代码 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 May 19, 2019 试试这个让 Windows 也区分大小写 https://blog.walterlv.com/post/case-sensitive-in-windows-file-system.html |
3 Ultraman May 19, 2019 via Android |
5 LokiSharp May 19, 2019 via iPhone 重构改个包名不难吧? |
6 719465553 May 19, 2019 见过 com.UI, class a_b,list.add(null);for(int i = 1;;)一堆坑的路过 |
8 kassadin May 19, 2019 按说有发帖的时间就够改完了,ide rename move 都是无痛的。 怕出问题就单文件分批次操作,能出问题也就是反射、配置、maven、混淆类的字符串,业务参数总不会带包名类名还区分大小写吧。 |
9 xuanbg May 19, 2019 改个包名还会出问题?在路径中批量查找替换,分分钟搞定。 |
11 wangyongbo May 19, 2019 我司的安卓工程师,把 APP 的包名用 com.android 开头,导致无法上架 google play。 |
12 NeinChn May 19, 2019 如果你的包名是在 rpc client 里面,然后给其他几十甚至上百个外部团队用的 这种时候你还敢随便改包名么 又不是所有应用都是简单的单 server 应用 万一有人基于包名做反射,做 SPI,改包名没改彻底就是作大死.... |
13 Leiothrix OP @LokiSharp 现在的问题是不敢去动那些在线上跑的东西,而且模块太多,上千个类需要修改成统一的规范凭我一个人去推动怕是做不到。我尝试过用 IDEA 去批量更改包名,最后以放弃告终,明天问问主管这东西改不改吧。 |
14 boris1993 May 20, 2019 via Android @LokiSharp #9 前年,所谓”负责 QA ”的人,亲口告诉我,我们时间很紧的,没有时间预留去写单元测试 我知道,很操蛋。我当时也差点吐血。 但是,对于一个开发流程是先闷头写代码,文档最后补的公司,你又能期望什么呢。 就算不考虑这些,通常来说,我也不想去碰不是我写的东西,因为我真的没把握不出问题。一旦出了问题,那就是我的锅。 |
15 Leiothrix OP @kassadin 上千个类,十几个不同功能的子项目,每个项目负责人都不同,IDE 还没智能到可以联动所有不同项目的包名一起修改。对了,还掺杂了很多 RPC 调用…… |
18 zwh2698 May 20, 2019 via Android Java 的重构工具很牛逼,兄弟你不能让工具闲着。创建项目的那个傻子,一定没有丰富的多平台经验。所以你不要闲着了,受个累,让大家都爽一下 |
19 iamdqncoder May 20, 2019 via Android 前人挖坑,后人跳坑 |
20 dengtongcai May 20, 2019 via iPhone 规范就是小写啊 |
21 didikee May 20, 2019 via Android @wangyongbo 这个前缀开头的是安卓系统内部应用 |
22 unco020511 May 20, 2019 最怕这种,每次导包时候我还得想半天 |
