在我当前团队中使用java泛型的重构似乎存在争议。我的问题是,在重构旧Java代码以利用其中一些功能方面,目前的行业标准是什么?当然,根据行业标准,我指的是最佳实践。链接到书籍或具有这些列表的网站将被授予答案投票,因为这是处理此问题的最不主观的方式。
答案 0 :(得分:8)
我不认为盲目地遵循别人宣称的“最佳实践”或“行业标准”是一个好主意。您最有可能决定更改代码是否值得。
您需要回答的问题是,升级旧代码会带来哪些好处,代价是什么,风险是什么?
主要好处是您将改进编译时类型检查,这有助于检测使用更新代码的新代码中的错误。它甚至可能突出显示现有代码中的错误。使用泛型的代码虽然有时非常冗长,但通常更具可读性,因为它明确说明哪些类型在哪些上下文中有效。您也不再需要抑制/忽略编译器警告。
费用是制作和测试引入仿制药所需的更改所需的时间。每次更改代码时,都有可能引入错误,因此存在风险。这些好处是否超过成本?这取决于您拥有的代码数量,使用方式以及您对时间的其他要求。
答案 1 :(得分:4)
麻省理工学院研究小组的论文可能会为您提供一些有用的指导原则:
答案 2 :(得分:3)
使用java泛型绝对是个好主意。它向后兼容。因此,您无法转换的代码库将继续使用新代码。
编辑:我应该提到type erasure作为向后兼容的原因。
答案 3 :(得分:1)
采用泛型的最佳做法?第一个最佳实践是“做”。尝试从代码中消除尽可能多的强制转换。如果你想让你的生活更轻松,可以使用IntelliJ的“Generify”重构 - 只需将它指向你的整个代码库,让它做它的事情,然后做一些后清理。
答案 4 :(得分:1)
您的团队应该平衡大规模重构的好处与成本以及执行此操作的技术和业务风险......以及您团队的其他优先事项。
来自不了解您的项目和业务背景的人的“最佳实践”论点和意见在这里根本不相关。答案 5 :(得分:1)
最佳做法不存在。这是一个奇怪的术语,表明门关闭了特定解决方案的“最佳性”......使用泛型?是。立即。这是一个尴尬的旅程,因为很多大型库(Hibernate,Spring)仍然没有完全接受它们......但根据我的经验,处理混合的泛型和勇敢的演员仍然会使代码库比不使用更好他们都是。
我还制定了转换为触摸式的政策,而不是某种巨大的重构任务。