Using an Object Method vs Using a Custom Getter in Accessing Array Size

What is the best way to access a dynamic value like an array size inside a class? In Java, I would create a getSize() function that would return the size of the array. In Kotlin, there are two ways of doing this:

// One solution
val size get() = myArray.size

// Another solution
fun size() = myArray.size

Is one method preferable than the other?

According to the Kotlin Coding Conventions one should prefer a function to a property if the size of ‘myArray’ could vary between calls and therefore violate the fourth condition.

returns the same result over invocations

@alanfo I don’t think it should be interpreted so strict that the property couldn’t vary between calls at all. For a class with mutable state it should return the same result if its state is unchanged.

Well, I agree that the fourth condition seems too strict, but that’s what the words say.

Perhaps the next time the code is revised it could be changed to something similar to what you’ve just said.

I think this is a useful answer to this:

  • property describes state
  • function describes behavior

Taken from here:
https://blog.kotlin-academy.com/kotlin-should-i-define-function-or-property-6786951da909