Как стать автором
Обновить

Комментарии 5

НЛО прилетело и опубликовало эту надпись здесь

Для всех публичных методов добавляется instristic на проверку not null типов. С приватными методами такой проверки нет, т.к. компилятор делает проверки на уровне компиляции.

Вот только не понятна логика этой генерации проверок. Особой разницы нет как упадет приложение, с NPE или Illegal*Exception. С аннотациями, как по мне, так более понятнее.
Проверяли бы себе на этапе компиляции, а так на пустом месте раздувается код.
Fail fast + более информативное сообщение: в исключении, кидаемым интрисиком, указывается имя параметра.
    public static void checkNotNullParameter(Object value, String paramName) {
        if (value == null) {
            throw sanitizeStackTrace(new NullPointerException(paramName));
        }
    }

Проверяли бы себе на этапе компиляции, а так на пустом месте раздувается код.

Не совсем понял. Вы говорите, что хотели бы избавиться от дополнительных рантайм проверок? Судя по поиску гугла, это возможно с помощью прогвадра либо флага компилятора. Хотя про этот флаг в доке котлина нет, может я плохо ищу.

upd Про флаг ничего нет, потому-что он неподдерживаемый stackoverflow.com/a/31723265
Вы говорите, что хотели бы избавиться от дополнительных рантайм проверок?

Да, хотелось бы иметь штатную возможность отключать эти проверки. А то получается так называемое «навязывание услуги», которая мне не нужна. Как следствие, весь код обвешивается "?" и "!!" как новогодняя ёлка.
Но это только моё субъективное мнение.
Доводилось видеть java код, где все было покрыто assert-ами, где каждые параметры и результаты функций многократно проверялись не только на NPE, но и на граничные условия, и на любой чих крешило приложение. Потом это всё было заменено на то, что было стабильно и можно было поддерживать.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории