Кирилл Данилов (donz_ru) wrote,
Кирилл Данилов
donz_ru

Category:

Не весь Spring одинаково полезен, и почему вопросы про equals, hashCode обязательны на собеседовании

Написав обертку для Oracle Coherence под Spring cache abstraction обратил внимание на генератор ключей "по умолчанию": org.springframework.cache.interceptor.DefaultKeyGenerator
Тот, кто заметил в описании этого класса, полный ахтунг, тот молодец. Я оказался молодцом на пятьдесят процентов. Понял, что явно не хватает как минимум названия метода для генерации ключа и сделал свой ключ-генератор, но почему-то полностью упустил момент с ключом в виде хэшкода, поэтому основную часть генерации переложил на наследуемый класс. Какой в жопу уникальный ключ из хэшкода?! Не знаю, почему я так облажался. Возможно был подгоняем "быстреньким решением" очень "критичного бага", который "вот прямо сейчас надо сделать". А может отвлекся на уютную жежешечку.
Как бы там ни было - обосрался, хотя мои первые вопросы на собеседованиях касаются как раз equals и hashCode. Но чем люди в Spring'е думали? Они то умные должны быть. EhCache из коробки предлагает полностью корректную реализацию, а тут что за херня?
Ужас, ужас, короче. Доверяй, но проверяй. Теперь уровень моей паранойи увеличился на 18.7%.
Да, кстати, еще раз убедился, что разработчики, которые считают вопросы относительно hashCode и equals на собеседовании ниже своего достоинства, могут встать парами и идти в жопу стройными рядами.

И на десерт качество реализации hashCode() у java.lang.String:

public class TestCache
{
public static void main(String[] args)
{
  System.out.println("BB".hashCode());
  System.out.println("Aa".hashCode());
}
}
Tags: it, java, spring, казлы, негатив
Subscribe

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 8 comments