Telegram Group & Telegram Channel
🏝 Как Π΄Π΅Π»Π°Ρ‚ΡŒ минималистичный API интСрфСйс с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ extension fun

ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π½Π° Kotlin ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· элСгантных Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ являСтся ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΉ ΠΌΠ½ΠΎΠ³ΠΈΠΌ ΠΏΠΎ Flow ΠΈΠ· Coroutines. Π•Π³ΠΎ ΡΡƒΡ‚ΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ интСрфСйс содСрТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ, Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π° всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ.

НапримСр, интСрфСйс Flow ΠΈΠ· Kotlin выглядит Ρ‚Π°ΠΊ:

interface Flow<out T> {
suspend fun collect(collector: FlowCollector<T>)
}

fun interface FlowCollector<in T> {
suspend fun emit(value: T)
}


ΠŸΠΎΡ‡Π΅ΠΌΡƒ это Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄?
πŸ‘‰ Минимализм ΠΈ ΡΡΠ½ΠΎΡΡ‚ΡŒ интСрфСйса. Один ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² интСрфСйсС ясно ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΡΡƒΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°, ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ.
πŸ‘‰ Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ API. МоТно Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ бСсконСчноС количСство Π½ΠΎΠ²Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π±Π΅Π· измСнСния интСрфСйса ΠΈ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости.
πŸ‘‰ Удобство ΠΈ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ. Π¦Π΅ΠΏΠΎΡ‡ΠΊΠΈ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² выглядят ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎ, Π»Π΅Π³ΠΊΠΎ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ Π΅Π΄ΠΈΠ½ΠΎΠΌΡƒ ΡΡ‚ΠΈΠ»ΡŽ, принятому Π² Kotlin.

ΠŸΠ»ΡŽΡΡ‹ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°
βœ… ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, благодаря гибкости Kotlin Extension-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.
βœ… Π›Ρ‘Π³ΠΊΠΎΡΡ‚ΡŒ Π² написании ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ тСстов, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ.
βœ… Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ читаСмости клиСнтского ΠΊΠΎΠ΄Π° благодаря ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈ понятной структурС Π²Ρ‹Π·ΠΎΠ²ΠΎΠ².
βœ… ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ ΠΈ понятныС API интСрфСйсов Π² Ρ‚ΠΈΠΏΠ°Ρ…

ΠœΠΈΠ½ΡƒΡΡ‹ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°
⚠️ Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π² ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΈ ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ примСнСния Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡƒΡ‚Π°Ρ‚ΡŒΡΡ Π² большом количСствС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ².
⚠️ ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ пСрСопрСдСлСния ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΠ»ΠΎΠΆΠ½ΠΈΡ‚ΡŒ ΠΊΠ°ΡΡ‚ΠΎΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ.

Когда Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ интСрфСйса вмСсто Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ?
ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π² интСрфСйс стоит ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ:
πŸ‘‰ Π€ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ ΡΠ°ΠΌΡƒΡŽ ΡΡƒΡ‚ΡŒ интСрфСйса.
πŸ‘‰ ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ Π² Ρ€Π°Π·Π½Ρ‹Ρ… имплСмСнтациях.
πŸ‘‰ Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Π΅ ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΡ… рСализация Ρ‡Π΅Ρ€Π΅Π· Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠ΅Π½Π΅Π΅ эффСктивна.

Когда ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ стоит Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ
Π―Π²Π½Ρ‹ΠΌΠΈ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚Π°ΠΌΠΈ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Ρ‡Π΅Ρ€Π΅Π· Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΊ интСрфСйсу - Ρ‚Π΅ Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈ просто Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ этого ΠΆΠ΅ интСрфСйса

interface Container {

val childCount: Int

// ❌ НС ΠΈΠΌΠ΅Π΅Ρ‚ смысла ΠΊΠ°ΠΊ функция интСрфСйса
fun isEmpty(): Boolean = childCount == 0
}

// βœ… Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ API интСрфСйса
fun Container.isEmpty(): Boolean = childCount == 0


πŸ’¬ Π”Π΅Π»ΠΈΡ‚Π΅ΡΡŒ Π² коммСнтариях ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ API

#kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM



tg-me.com/kotlin_broadcast/1706
Create:
Last Update:

🏝 Как Π΄Π΅Π»Π°Ρ‚ΡŒ минималистичный API интСрфСйс с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ extension fun

ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π½Π° Kotlin ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· элСгантных Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ являСтся ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΉ ΠΌΠ½ΠΎΠ³ΠΈΠΌ ΠΏΠΎ Flow ΠΈΠ· Coroutines. Π•Π³ΠΎ ΡΡƒΡ‚ΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ интСрфСйс содСрТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ, Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π° всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ.

НапримСр, интСрфСйс Flow ΠΈΠ· Kotlin выглядит Ρ‚Π°ΠΊ:

interface Flow<out T> {
suspend fun collect(collector: FlowCollector<T>)
}

fun interface FlowCollector<in T> {
suspend fun emit(value: T)
}


ΠŸΠΎΡ‡Π΅ΠΌΡƒ это Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄?
πŸ‘‰ Минимализм ΠΈ ΡΡΠ½ΠΎΡΡ‚ΡŒ интСрфСйса. Один ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² интСрфСйсС ясно ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΡΡƒΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°, ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ.
πŸ‘‰ Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ API. МоТно Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ бСсконСчноС количСство Π½ΠΎΠ²Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π±Π΅Π· измСнСния интСрфСйса ΠΈ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости.
πŸ‘‰ Удобство ΠΈ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ. Π¦Π΅ΠΏΠΎΡ‡ΠΊΠΈ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² выглядят ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎ, Π»Π΅Π³ΠΊΠΎ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ Π΅Π΄ΠΈΠ½ΠΎΠΌΡƒ ΡΡ‚ΠΈΠ»ΡŽ, принятому Π² Kotlin.

ΠŸΠ»ΡŽΡΡ‹ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°
βœ… ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, благодаря гибкости Kotlin Extension-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.
βœ… Π›Ρ‘Π³ΠΊΠΎΡΡ‚ΡŒ Π² написании ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ тСстов, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ.
βœ… Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ читаСмости клиСнтского ΠΊΠΎΠ΄Π° благодаря ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈ понятной структурС Π²Ρ‹Π·ΠΎΠ²ΠΎΠ².
βœ… ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ ΠΈ понятныС API интСрфСйсов Π² Ρ‚ΠΈΠΏΠ°Ρ…

ΠœΠΈΠ½ΡƒΡΡ‹ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°
⚠️ Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π² ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΈ ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ примСнСния Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡƒΡ‚Π°Ρ‚ΡŒΡΡ Π² большом количСствС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ².
⚠️ ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ пСрСопрСдСлСния ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΠ»ΠΎΠΆΠ½ΠΈΡ‚ΡŒ ΠΊΠ°ΡΡ‚ΠΎΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ.

Когда Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ интСрфСйса вмСсто Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ?
ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π² интСрфСйс стоит ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ:
πŸ‘‰ Π€ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ ΡΠ°ΠΌΡƒΡŽ ΡΡƒΡ‚ΡŒ интСрфСйса.
πŸ‘‰ ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ Π² Ρ€Π°Π·Π½Ρ‹Ρ… имплСмСнтациях.
πŸ‘‰ Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Π΅ ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΡ… рСализация Ρ‡Π΅Ρ€Π΅Π· Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠ΅Π½Π΅Π΅ эффСктивна.

Когда ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ стоит Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ
Π―Π²Π½Ρ‹ΠΌΠΈ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚Π°ΠΌΠΈ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Ρ‡Π΅Ρ€Π΅Π· Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΊ интСрфСйсу - Ρ‚Π΅ Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈ просто Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ этого ΠΆΠ΅ интСрфСйса

interface Container {

val childCount: Int

// ❌ НС ΠΈΠΌΠ΅Π΅Ρ‚ смысла ΠΊΠ°ΠΊ функция интСрфСйса
fun isEmpty(): Boolean = childCount == 0
}

// βœ… Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ API интСрфСйса
fun Container.isEmpty(): Boolean = childCount == 0


πŸ’¬ Π”Π΅Π»ΠΈΡ‚Π΅ΡΡŒ Π² коммСнтариях ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ API

#kotlin

BY Kotlin Multiplatform Broadcast


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/kotlin_broadcast/1706

View MORE
Open in Telegram


Kotlin Multiplatform Broadcast Telegram | DID YOU KNOW?

Date: |

Why Telegram?

Telegram has no known backdoors and, even though it is come in for criticism for using proprietary encryption methods instead of open-source ones, those have yet to be compromised. While no messaging app can guarantee a 100% impermeable defense against determined attackers, Telegram is vulnerabilities are few and either theoretical or based on spoof files fooling users into actively enabling an attack.

Kotlin Multiplatform Broadcast from us


Telegram Kotlin Multiplatform Broadcast
FROM USA