Здравствуйте, Ночной Смотрящий, Вы писали:
vsb>>Моё правило использования var — если тип очевиден из имени переменной или из инициализирующего значения, то его можно использовать. Если не очевиден, то надо прописывать явный тип. То бишь var x = 1; var s = "hello"; var sb = new StringBuilder(); var appointment = ... (где у appointment тип Appointment). При этом получается примерно 50 на 50 и мне такой результат нравится.
НС>А где примеры неочевидностей, когда явный тип улучшает читаемость?
Set<String> sentReferrerIins =
employeeRepository.queryByIins(organization, referrerIins).stream()
.filter(employee -> employee.getStatus() == SENT_TO_API)
.map(Employee::getIin)
.collect(toSet());
из идентификатора не очевиден тип. Очевидно только то, что это коллекция, но опять же какая коллекция — не понятно, обычно под коллекцией подразумевают List. Что такое iin — может быть это класс такой, без хорошего знания проекта не понять. Если вдумчиво прочитать инициализатор, можно увидеть, что вызывается toSet но это грубо говоря 10 секунд парсинга кода. При этом если тебе конкретно этот код не интересен, а интересен код ниже и тут тебе хочется только увидеть тип этой переменной, то ты эти 10 секунд потратишь отвлекаясь и вытесняя из краткосрочной памяти другие моменты. А с явным типом ты просто игнорируешь инициализирующее значение и сразу видишь тип.