Android Jetpack — KTX, como usar Kotlin Extensions

Levi Albuquerque
3 min readMay 27, 2018

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:

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 ;)

--

--