Довольно странное название для начала :)

Нам нравится функция 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)

На этом мы завершаем запись в блоге Понимание бессмысленного сравнения. Надеюсь, вы найдете ее полезной в своем будущем коде.

Удачного кодирования :)