- врать себе и окружающим. Если есть в языке паника, значит любой кусок кода может упасть. В джаве это отягчается еще и тем что можно через эксепшены сделать контрол-флоу. Если контрол-флоу избегать, то эксепшен в джаве будет просто средством донести программеру ASAP что он где то накосячил. Но никто никогда ему не даст гарантии что фильтры не кидают эксепшенов. Эдак какой нить товарищ, следуя этому правилу, просто перенесет фильтр в метод - и будет у него эксепшн в методе. Нарушение ли это? А если в качестве предиката используется уже готовый метод? Или мы теперь запретим нечистые предикаты? Даже Хаскель паникует, куда уж ленивей. Поэтому нет - не объективно.
Про панику я не спорю, упасть может что угодно и где угодно. Но вот как раз делать это частью контрол-флоу не стоит, с этим потом работать грустно.
Мы сейчас говорим об идеологии стримов и методов обработки данных в принципе. Идеология filter такова, что он может возвращать только "да" и "нет", все, никаких третьих вариантов. Если он падает с NPE - значит, данные изначально неправильные, и их по порядку бы сначала профильтровать ещё и на null-ы. Ничего не берется из пустого места, если предсмотреть логичные ситуации, то паники на пустом месте не будет. Какой смысл был тогда завозить стримы в Джаву? Фильтровали бы дальше через for, и исключения бы ловили
Обсуждают сегодня