cómo ser más feliz, ligar más y tener más pelo programando en kotlin

25
Betabeers Murcia 30/6/2016 @jdmuriel Cómo ser más feliz, ligar más y tener más pelo programando en KOTLIN Jesús L: Domínguez Muriel @jdmuriel

Upload: jesus-l-dominguez-muriel

Post on 15-Feb-2017

57 views

Category:

Software


1 download

TRANSCRIPT

Page 1: Cómo ser más feliz, ligar más y tener más pelo programando en Kotlin

Betabeers Murcia 30/6/2016 @jdmuriel

Cómo ser más feliz, ligar más y tener más pelo programando en

KOTLIN

Jesús L: Domínguez Muriel

@jdmuriel

Page 2: Cómo ser más feliz, ligar más y tener más pelo programando en Kotlin

Betabeers Murcia 30/6/2016 @jdmuriel

¿Cómo ser más feliz?

• Tomar cañas con los amigos– (Hay estudios: Close relationships, more than

personal satisfaction or one’s view of the world as a whole, are the most meaningful factors in happiness. – Magen, Birenbaum, and Pery 1996)

• Aprender cosas nuevas

Page 3: Cómo ser más feliz, ligar más y tener más pelo programando en Kotlin

Betabeers Murcia 30/6/2016 @jdmuriel

Kotlin y yo• Un poco oxidado como

programador• Todo empezó con la

Google Code Jam• Python, Groovy, Java…• ¿Qué es eso de Kotlin de

lo que hablan tanto?

Page 4: Cómo ser más feliz, ligar más y tener más pelo programando en Kotlin

Betabeers Murcia 30/6/2016 @jdmuriel

Kotlin y yo

• Sin querer acabé en la Tuenti Challenge 6

• Ahora no puedo dejarlo

Page 5: Cómo ser más feliz, ligar más y tener más pelo programando en Kotlin

Betabeers Murcia 30/6/2016 @jdmuriel

Aprender mola, pero…

Page 6: Cómo ser más feliz, ligar más y tener más pelo programando en Kotlin

Betabeers Murcia 30/6/2016 @jdmuriel

Aprendiendo Kotlin

• Kotlin es fácil (al menos para los programadores Java):

fun main (args: Array<String>) { println("Hello, world")}

• Java “Pythonizado”, esta vez con tipado fijo, no como Groovy

Page 7: Cómo ser más feliz, ligar más y tener más pelo programando en Kotlin

Betabeers Murcia 30/6/2016 @jdmuriel

Fácil de aprender

• Sintaxis muy similar a Java. Diferencias:– var, val para definir variables– Los tipos se marcan detrás

• Interoperabilidad completa con Java– Tipos equivalentes– Fácil usar cualquier* librería– Puede utilizarse desde Java (o Groovy)

• Genera bytecode para Java 6

Page 8: Cómo ser más feliz, ligar más y tener más pelo programando en Kotlin

Betabeers Murcia 30/6/2016 @jdmuriel

Extension functionsfun File.miMetodo() {…}f = File()f.miMetodo()

• Geniales para acceder a funciones de librería

• Los principales métodos de java.util, java.lang.text, etc. están añadidos a las clases String, Int, File

• Gran parte de las novedades de Kotlin se implementan así.

Page 9: Cómo ser más feliz, ligar más y tener más pelo programando en Kotlin

Betabeers Murcia 30/6/2016 @jdmuriel

Cómo ligar más

• Para ligar hay que cuidarse• Para cuidarse hace falta tiempo• Kotlin ahorra un montón de tiempo

Page 10: Cómo ser más feliz, ligar más y tener más pelo programando en Kotlin

Betabeers Murcia 30/6/2016 @jdmuriel

Cómo ligar más

Usa Java Usa Kotlin

Page 11: Cómo ser más feliz, ligar más y tener más pelo programando en Kotlin

Betabeers Murcia 30/6/2016 @jdmuriel

Ahorro de tiempo

• El tipo se infiere• No hay New: var s = Objeto()

• No hay ;• Getters y setters automáticos

(pueden redefinirse o no)• Parámetros por defecto y con nombre

objeto.member += objeto.método(param="ddd")

Page 12: Cómo ser más feliz, ligar más y tener más pelo programando en Kotlin

Betabeers Murcia 30/6/2016 @jdmuriel

Menos verbosoclass EmailMessage2 implements Serializable {

private final String toAddress;private final String subject;private final String body;public EmailMessage2(String toAddress, String subject, String body) { this.toAddress = toAddress; this.subject = subject; this.body = body;}public String getToAddress() { return toAddress;}public String getSubject() { return subject;}public String getBody() { return body;}public boolean equals(Object o) { return false;}public int hashCode() { return false;}

}

Data class EmailMessage2 ( val toAddress: String, val subject: String, val body: String ): Serializable

Page 13: Cómo ser más feliz, ligar más y tener más pelo programando en Kotlin

Betabeers Murcia 30/6/2016 @jdmuriel

Menos verboso (estilo Python)

• Cadenas interpoladasprintln (“El resultado es $resultado”)

• Se pueden incluir expresionesprintln (“La suma de 3 + 4 es ${3+4}”)

• Funciones definidas con =Fun hello (name: String) = “Hello $name”

• Asignación por componentes(a, b) = getCoordinates()

Page 14: Cómo ser más feliz, ligar más y tener más pelo programando en Kotlin

Betabeers Murcia 30/6/2016 @jdmuriel

Permite usar lambdas(que están de moda)

¿Cómo dices que llamas a .foldRightIndexed?

Page 15: Cómo ser más feliz, ligar más y tener más pelo programando en Kotlin

Betabeers Murcia 30/6/2016 @jdmuriel

Funciones lambda

• Las funciones son objetos de primer clasefun suma (a: Int, b: Int) = a + bvar f : (Int, Int) -> Int f = ::suma println (f(5,5))

• Si se pasan como último parámetro, se pasan tras los paréntesis, entre llavesfun <T> Iterable<T>.forEach(action: (T) -> Unit): Unit { for (element in this) action(element)}l.forEach { println (it) }

Page 16: Cómo ser más feliz, ligar más y tener más pelo programando en Kotlin

Betabeers Murcia 30/6/2016 @jdmuriel

Funciones para colecciones similar al de Java 8 (pero en Java 6)

• Map• Filter• Fold• forEach• Te encuentras utilizándolas porque la sintaxis es

muy sencilla.

Page 17: Cómo ser más feliz, ligar más y tener más pelo programando en Kotlin

Betabeers Murcia 30/6/2016 @jdmuriel

Ahorra mucho código en Android

No más clases anónimasview.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(v.getContext(), "Click", Toast.LENGTH_SHORT).show(); }});

Se convierte enview.setOnClickListener({ view -> toast("Click")})

view.setOnClickListener { toast("Click") }

Page 18: Cómo ser más feliz, ligar más y tener más pelo programando en Kotlin

Betabeers Murcia 30/6/2016 @jdmuriel

Una literal function con receiver y le derrito el DSL

Una lazy property más y caerá en mi data class

Page 19: Cómo ser más feliz, ligar más y tener más pelo programando en Kotlin

Betabeers Murcia 30/6/2016 @jdmuriel

Cómo tener más pelo

• Kotlin está pensado para evitar algunos de los errores más comunes.

Page 20: Cómo ser más feliz, ligar más y tener más pelo programando en Kotlin

Betabeers Murcia 30/6/2016 @jdmuriel

Gestión de nulos

• Tony Hoare introduced Null references in ALGOL W back in 1965 “simply because it was so easy to implement”. He talks about that decision considering it “my billion-dollar mistake”.

• Las variables que admiten nulos deben tener un tipo específico (String? en vez de String)

• var a : String = null //Error• var b : String? = null //OK• “abc”.contains(b) //Error, requiere String

Page 21: Cómo ser más feliz, ligar más y tener más pelo programando en Kotlin

Betabeers Murcia 30/6/2016 @jdmuriel

Gestión de nulos

• Te motiva a utilizar funciones que no devuelven nulos, excepto en casos especiales (ayuda el poder devolver dos resultados en un Pair)

• Operador ?. (llama si no nulo)• Operador ?: (valor por defecto si nulo)

val a = getCell("x")?.substringAfter("-")?:""

Page 22: Cómo ser más feliz, ligar más y tener más pelo programando en Kotlin

Betabeers Murcia 30/6/2016 @jdmuriel

Buenas prácticas

• Sintaxis val / var, inmutableListOf() =>Favorecen el uso de variables inmutables, programación más funcional

• Interfaces con código, clases no heredables por defecto =>Reducen las jerarquías de clases heredadas que complican los diseños

Page 23: Cómo ser más feliz, ligar más y tener más pelo programando en Kotlin

Betabeers Murcia 30/6/2016 @jdmuriel

Resumen• Fácil de aprender• Interoperable con

Java• Tipado estático,

inferencia• Data class• Cadenas

interpoladas• Funciones de

extensión de clases

• Gestión de nulos• Lambdas• Métodos Java 8 para

colecciones• Var/val, métodos

para listas, arrays, sets inmutables

• Interfaces con código• Clases cerradas

Page 24: Cómo ser más feliz, ligar más y tener más pelo programando en Kotlin

Betabeers Murcia 30/6/2016 @jdmuriel

¿Cómo ser más feliz?

…o aprende Kotlin ;-)

Page 25: Cómo ser más feliz, ligar más y tener más pelo programando en Kotlin

Betabeers Murcia 30/6/2016 @jdmuriel

Gracias

¿Preguntas?

Jesús L: Domínguez Muriel

@jdmuriel