Я изучал образцы архитектуры Google.
https://github.com/android/architecture-samples/tree/master
И то, что я заметил, очень часто используется contracts
Например: в TasksActivity
мы находим этот код:
private fun setupNavigationDrawer() {
drawerLayout = (findViewById<DrawerLayout>(R.id.drawer_layout))
.apply {
setStatusBarBackground(R.color.colorPrimaryDark)
}
}
и перед contracts
мы бы написали это так:
private fun setupNavigationDrawer() {
drawerLayout = (findViewById(R.id.drawer_layout))
drawerLayout.setStatusBarBackground(R.color.colorPrimaryDark)
}
При нажатии apply
мы видим InvocationKind.EXACTLY_ONCE
, что означает, что этот контракт гарантирует, что метод setStatusBarBackground
вызывается только один раз.
Какова практическая польза от этой проверки и когда ее следует использовать? Потому что, на мой взгляд, он более кодовый и менее читабельный.