我正在进行一个单元测试项目,其中断言调用.equals方法。然而,之前项目中的人员没有生成这些方法。
在编码时自动生成这些方法是否被视为最佳做法?所有程序员都应该这样做吗?
我正在搜索有关.equals和.hashcode方法的更多信息,其中大多数似乎都是针对如何实现或覆盖它们。
答案 0 :(得分:2)
这主要是品味问题 - 如果您不希望使用equals
方法(例如,不使用assertEquals
,请不要使用这个类作为Map
等中的一个键,写它意味着你可能正在编写死代码,而一些约定会主张避免它。
在这里,似乎不是一个问题 - 如果您打算使用assertEquals
,则需要实施equals
方法。如果你要实现它,你可能也应该实现hashCode
,以便将来证明你的代码不会偷偷摸摸,很难找到,错误。
答案 1 :(得分:0)
自动生成这些方法会引导我们进行一些标准实现。一个标准实现在Object中编码:比较链接和本机哈希码计算。 除非您能想象适合项目中所有实体的其他标准实现,否则您可能会自动生成等于和哈希代码:当您了解未来比较的所有条件时,手动实现它。