Android Jetpack — KTX, como usar Kotlin Extensions
Mais um post para a coleção do Android Jetpack. Para falar a verdade eu resolvi fazer meio que uma série sobre o Jetpack, então esse é o novo post dessa série o//.
Vamos falar de coisa boa, vamos falar de techpi… Kotlin :)
Mais precisamente do componente KTK (a.k.a Katy X, brinks), que é como virou moda chamas as Kotlin Extensions que foram desenvolvidas pelo Google (e pela comunidade também, já que é um projeto open source) para “enriquecer” o desenvolvimento Android com funcionalidades oferecidas pelo Kotlin.
Mas o que é Extension Functions mesmo?
Tirando da documentação oficial do Kotlin, Extension Functions:
Kotlin, similar to C# and Gosu, provides the ability to extend a class with new functionality without having to inherit from the class or use any type of design pattern such as Decorator.
Já usou o Glide para carregar imagens na sua ImageView?. Podemos criar uma extension function para isso e a utilização fica mais simplificada:
Isso abre um leque de possibilidades e facilidades que nem dá pra imaginar (o Swift que o diga). Ao adicionar algumas linhas de código, podemos adicionar funcionalidades que talvez precisariamos criar uma classe customizada para realizar.
E a Katy-X?
Mas não estamos aqui para falar daquelas Extensions, mas sim dessas criadas especialmente para interagir com os componentes do SDK Android. As extensões “atingem” vários pacotes do framework:
- androidx.animation
- androidx.content
- androidx.content.res
- androidx.database
- androidx.database.sqlite
- androidx.graphics
- androidx.graphics.drawable
- androidx.net
- androidx.os
- androidx.text
- androidx.time
- androidx.transition
- androidx.util
- androidx.view
Já dá para ver que eles já estáo utilizando o namespace do Android X ❤.
Então, uma coisa comum que fazemos como transformar uma URL em Uri, por exemplo, isso com KTX ficou tão simples quanto chamar um método na própria String:
E editar SharedPreferences então, tão fácil quanto passar um lambda:
A ideia do KTX de deixar o desenvolvimento Android mais “Kotlinônico”(olha o neologismo ai gente) é muito interessante, e o Google tem se esforçado para não deixar a comunidade se empolgar demais com as possibilidades e tentar facilitar tudo utilizando Extension Function. Em uma palestra do último I/O, Jake Wharton explicou que existem princípios por trás do que é ou não é adotado dentro do KTX:
- As funcões sempre que possível devem fazer uso de funcionalidades já existentes e apenas modificar o nível de verbosidade (deixar mais a cara do Kotlin)
- É desejável a utilização de funções “inline”, isso algumas vezes é requisito do compilador, ou torna o custo da utilização desse tipo de funções menor (menos memória, por exemplo).
- Preferencialmente, as funções devem utilizar sintaxe única ao Kotlin, já que a ideia é deixar tudo mais “kotlinesco” (criando termos aqui galera, por favor pessoal do Aurélio, já podem adicionar ao dicionário).
- Não utilizar as funções só para deixar o código menor ou mais legível, a intenção é boa, mas as funções devem ter algo a acrescentar, algo de funcional.
- As funções não devem existir para resolver problemas únicos onde a mudança de um número pequeno de parâmetros torna o seu uso inútil.
Essas “regrinhas” foram apresentadas porque o repositório está lá e qualquer um pode contribuir com novas funções, mas é importante lembrar das regras quando for fazer um PR hein.
Onde comprar?
Para começar a usar, basta adicionar a dependência:
dependencies {
implementation 'androidx.core:core-ktx:1.0.0-alpha1'
}
É isso aí :)
If you like it and you know it clap your hands, clap clap clap ;)