Комментарии 5
Для всех публичных методов добавляется instristic на проверку not null типов. С приватными методами такой проверки нет, т.к. компилятор делает проверки на уровне компиляции.
Вот только не понятна логика этой генерации проверок. Особой разницы нет как упадет приложение, с NPE или Illegal*Exception. С аннотациями, как по мне, так более понятнее.
Проверяли бы себе на этапе компиляции, а так на пустом месте раздувается код.
Проверяли бы себе на этапе компиляции, а так на пустом месте раздувается код.
Fail fast + более информативное сообщение: в исключении, кидаемым интрисиком, указывается имя параметра.
Не совсем понял. Вы говорите, что хотели бы избавиться от дополнительных рантайм проверок? Судя по поиску гугла, это возможно с помощью прогвадра либо флага компилятора. Хотя про этот флаг в доке котлина нет, может я плохо ищу.
upd Про флаг ничего нет, потому-что он неподдерживаемый stackoverflow.com/a/31723265
public static void checkNotNullParameter(Object value, String paramName) {
if (value == null) {
throw sanitizeStackTrace(new NullPointerException(paramName));
}
}
Проверяли бы себе на этапе компиляции, а так на пустом месте раздувается код.
Не совсем понял. Вы говорите, что хотели бы избавиться от дополнительных рантайм проверок? Судя по поиску гугла, это возможно с помощью прогвадра либо флага компилятора. Хотя про этот флаг в доке котлина нет, может я плохо ищу.
upd Про флаг ничего нет, потому-что он неподдерживаемый stackoverflow.com/a/31723265
Вы говорите, что хотели бы избавиться от дополнительных рантайм проверок?
Да, хотелось бы иметь штатную возможность отключать эти проверки. А то получается так называемое «навязывание услуги», которая мне не нужна. Как следствие, весь код обвешивается "?" и "!!" как новогодняя ёлка.
Но это только моё субъективное мнение.
Доводилось видеть java код, где все было покрыто assert-ами, где каждые параметры и результаты функций многократно проверялись не только на NPE, но и на граничные условия, и на любой чих крешило приложение. Потом это всё было заменено на то, что было стабильно и можно было поддерживать.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Null safety of Kotlin. Мысль про киллер фичу