Избыточное «если» заявление меньше - PullRequest
0 голосов
/ 11 января 2019

Мой код как ниже

 private fun validateInput(): Boolean {
     if (etReportRow1.text.toString() == "" 
         || etReportRow2.text.toString() == "" 
         || etReportRow3.text.toString() == "")
         return false
     else
         return true
 }

Компилятор подскажет

Избыточный оператор «if» меньше ... (Ctrl + F1) Эта проверка сообщает, если утверждения, которые можно упростить до отдельных утверждений. Например: if (foo ()) {return true} else {return false} может быть упрощено возвращать foo ().

Не будет ли предложенный код зацикливаться?

Ответы [ 5 ]

0 голосов
/ 11 января 2019

Еще более кратко:

public fun validateInput() = setOf(
    etReportRow1, etReportRow2, etReportRow3
).none { 
    "${it.text}".isEmpty() 
}
0 голосов
/ 11 января 2019

Я думаю, что это должно работать:

private fun validateInput() = !(etReportRow1.text.toString.isEmpty()  
                                || etReportRow2.text.toString().isEmpty()
                                || etReportRow3.text.toString().isEmpty() )
0 голосов
/ 11 января 2019

Поскольку логическое выражение оценивается как логическое значение, вы можете просто вернуть результат самого выражения, без необходимости явно возвращать true или false.

Вы можете еще больше упростить вещи, используя следующую функцию с одним выражением:

 private fun validateInput() = etReportRow1.text.toString() != "" && 
                               etReportRow2.text.toString() != "" &&
                               etReportRow3.text.toString() != ""
0 голосов
/ 11 января 2019

Все отчеты в форме:

if(condition){
    return false
} else {
    return true
} 

можно упростить до:

return !condition

Так что в вашем случае это приведет к:

return !(etReportRow1.text.toString() == "" || etReportRow2.text.toString() == "" || etReportRow3.text.toString() == "")

Или:

return 
    etReportRow1.text.toString().isNotEmpty() && 
    etReportRow2.text.toString().isNotEmpty() && 
    etReportRow3.text.toString().isNotEmpty()

Примечание: isNotEmpty() - это метод расширения:

public inline fun CharSequence.isNotEmpty(): Boolean = length > 0

Чтобы избежать дублирования кода, вы также можете использовать Sequence:

public fun validateInput() = sequenceOf(etReportRow1, etReportRow2, etReportRow3)
    .map { it.text.toString() }
    .all { it.isNotEmpty() }
0 голосов
/ 11 января 2019

1001 * попробовать *

return !(etReportRow1.text.toString() == "" || etReportRow2.text.toString() == "" || etReportRow3.text.toString() == "")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...