es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

“Regla de TDD y conflicto de contrato de Java.”

La regla uno de TDD es la siguiente:

Escribir código de producción solo para aprobar una prueba de unidad fallida.

El libro “Effective Java Item 11” (tercera edición) establece el mismo contrato para el método java Object.hashCode():

Siempre sobrescribe hashCode cuando sobrescribes equals.

Ahora bien, ¿qué es lo correcto si solo necesitamos sobrescribir equals para aprobar una prueba fallida y no necesitamos utilizar un objeto en una colección en la prueba actualmente fallida y es posible que esto ocurra en el futuro?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Todavía se recomienda siempre anular hashCode cuando se anula equals, aunque no sea necesario para la prueba fallida actual o para usar objetos en una colección. Esto se debe a que, si no anula hashCode, dos objetos que son iguales según el método equals anulado pueden tener diferentes códigos hash, lo que puede causar problemas al usarlos en colecciones como HashMap o HashSet. Es mejor ser proactivo y asegurar que se mantenga el contrato entre equals y hashCode, en lugar de enfrentar posibles problemas en el futuro.

Comments are closed.