Довольно странное название для начала :)
Нам нравится функция Null-Safety в Kotlin, она избавляет нас от написания множества проверок на null, подобных этой.
if( foo !=null) doSomethingAwesomeWithFoo(foo)
Нам просто нужно убедиться, что при объявлении переменных они не равны нулю, как это
val foo:String // non nullable
и теперь мы можем напрямую позвонить
doSomethingAwesomeWithFoo(foo)
Но жизнь разработчиков непроста, когда они имеют дело с данными из внешнего мира, такими как получение ответа от серверной части, и вы не можете быть уверены, что всегда будете получать ненулевое значение из серверной части для некоторых полей. Поэтому, хотя мы и хотим сделать его необнуляемым, мы не можем :(
e.g.
data class ResponseFromBackend(val foo: String?, val bar:String?)
Это приводит к установке нулевой проверки везде в коде, где бы вы ни хотели получить доступ к этим полям.
foo?.let { doSomethingAwesomeWithFoo(it) }
Что, если мы сможем воспользоваться преимуществами обоих миров? то есть
- Нулевая безопасность Котлина
- Проверить проверку null
А вот и само название блога: Бессмысленное сравнение.
Объявите поля как не допускающие значение NULL, а также напишите один метод проверки для проверки на наличие значений NULL, который проверяет поля на наличие значений NULL. Поскольку поля foo
и bar
объявлены как необнуляемые, ваша IDE начинает жаловаться на это, и вы можете подавить это с помощью аннотации SENSELESS_COMPARISON
data class ResponseFromBackend(val foo: String, val bar:String) @Suppress("SENSELESS_COMPARISON") fun ResponseFromBackend.isValid(): Boolean { if (foo == null) return false if (bar == null) return false return true }
Теперь, когда мы проверили значение null в одном месте, мы можем использовать foo
& bar
без проверки наличия значений null в последующих блоках кода, подобных этому.
doSomethingAwesomeWithFoo(foo)
На этом мы завершаем запись в блоге Понимание бессмысленного сравнения. Надеюсь, вы найдете ее полезной в своем будущем коде.
Удачного кодирования :)