Why is this an issue?
The expression can be simplified using one of the functions isEmpty
, isNotEmpty
or isNullOrEmpty
.
What is the potential impact?
Readability and Understanding
This change makes the code more concise and easier to understand. The additional comparison operator would increase the complexity of the
expression while not offering any benefit. The function names isEmpty
, isNotEmpty
and isNullOrEmpty
are
descriptive on the other hand, so it is evident to readers what the purpose of the expression is.
How to fix it
Replace
-
collection.size == 0
, collection.count() == 0
or !collection.isNotEmpty()
with
collection.isEmpty()
-
collection.size != 0
, collection.count() != 0
or !collection.isEmpty()
with
collection.isNotEmpty()
-
collection == null || collection.size == 0
or collection == null || collection.count() == 0
with
collection.isNullOrEmpty()
Code examples
Noncompliant code example
val list = listOf(5,2,9,6,8,2,5,7,3)
val hasElemenents = !list.isEmpty() // Noncompliant, use isNotEmpty()
val hasNoElemenents = list.count() == 0 // Noncomplient, use isEmpty()
fun isNullOrEmpty(list: List<Int>?): Boolean = list == null || list.size == 0 // Noncompliant, use isNullOrEmpty
Compliant solution
val hasElemenents = list.isNotEmpty() // Compliant
val hasNoElemenents = list.isEmpty() // Compliant
fun isNullOrEmpty(list: List<Int>?): Boolean = list.isNullOrEmpty() // Compliant
Resources
Documentation