Как очень часто, ответы: это зависит.
Предположим, что вы изменили реализацию hashCode() одного из ваших классов.
1) если (ваше приложение не сохраняет свои данные) , то при перезапуске приложения каждая часть будет использовать новую реализацию. таким образом: нет проблем
2) если (ваше приложение сохраняет свои данные) , то при перезагрузке приложение перезагрузит свои данные; и в зависимости от того, как/где вы изменили hashCode() ... могут возникнуть интересные вещи.
Для вашего второго вопроса; нет общего способа «решить» это, но есть хорошо известные практики, и если вы будете следовать им, шансы становятся меньше, чем кто-то испортит:
1) Образование и умение: старайтесь, чтобы все касались кода знает, что он делает (и не слепо следит за приказами), но вы сказали мне делать xyz, поэтому я сел и сделал точно xyz, не считая вообще, каковы последствия »)
2) Хороший дизайн, -использование существующих компонентов. Например: стандартная java поставляется с «известными» хорошими наборами, картами, коллекциями. Почему вы думаете, что вам нужно изобретать колесо, и почему вы думаете, что ваша реализация будет «лучше»?
3) Хорошие испытания. Сделайте TDD и убедитесь, что каждая новая функция имеет модульные тесты, которые охватывают все его поведение. И затем убедитесь, что ваши тесты устройства запускаются автоматически, когда кто-то подталкивает код в вашу систему контроля версий; так что вы заметите, когда материал сломается. Помимо этого, постройте разумные тесты функции/интеграции для тех аспектов, которые не могут быть проверены модульными тестами.
Что значит «изменено во время выполнения»? – GhostCat
Если вы изменили реализацию hashcode, тогда вы скомпилировали и повторно развернули новый код, поэтому вам пришлось перестроить hashset при перезапуске вашего кода, так что в чем проблема? – Andreas