Llevamos un año dandole duro a kotlin desde karumi tanto del lado de servidor como desde el lado de Android, y hemos descubierto muchas cosas interesantes a la hora de programar y como escribir mejor código y más sencillo en Kotlin. En esta charla eseñaremos los cambios que hemos introducido y como explotamos las ventajas de un lenguaje que viene muy fuerte, dando mucha caña y con un potencial enorme. Veremos código y muchos ejemplos y lo compararemos con código antiguo en Java. Si buscas la charla de introdución a Kotlin donde explicaremos como se escribe un elvis operator, esta no es.
Find out more at https://madrid2018.codemotionworld.com/speakers/
3. Testing for android & iOS.
Trainings
Architecture, Patterns and
principles for Android & iOS.
Mastering Git.
Advanced mobile development.
Testing for android & iOS.
Architecture, Patterns and
principles for Android & iOS.
Companies For Everybody
Next open:
Testing Training 23 Jun.
Kotlin Training 20 Feb.
Swift Training 26 Mar.
Arch Training 3 Apr.
9. @Inject
public class Application extends Controller, ParseableJson
{
public Application(
private final CreateKarumiDeveloper createKarumiDeveloper,
private final GetDeveloper getDeveloper
){/**/}
public CompletionStage<Result>
getDeveloper(String developerId){
getDeveloper.execute(UUID.fromString(developerId));
/**/
}
}
Adam Tornhill
Command
Pattern
JAVA
10. class Application @Inject constructor(
private val createKarumiDeveloper:CreateKarumiDeveloper,
private val getDeveloper: GetDeveloper
) : Controller(), ParseableJson {
fun getDeveloper(developerId: String):
CompletionStage<Result> = async {
getDeveloper(UUID.fromString(developerId)).fold(
ifLeft = this::processError,
ifRight = this::ok
)
}
}
Adam Tornhill
is this a method?
or is an object?
KOTLIN
11. class GetDeveloper @Inject constructor(
private val developerDao: DeveloperDao
) {
operator fun invoke(developerId: UUID):
Either<DeveloperError, Developer> =
developerDao[developerId].fold(
ifFailure = { DeveloperError.StorageError.left() },
ifSuccess = { it.toEither{ DeveloperError.NotFound }}
)
}
Adam Tornhill
Override
operators
getSuperHeroes()
KOTLIN
40. data class Developer(
val id: UUID = UUID.randomUUID(),
val username: String,
val email: String?
)
Adam Tornhill
Kotlin
val developer = Developer(
val email = “jorge@karumi.com",
val username = “Jorge Carmona”
)
val developer = Developer(
val username = “Jorge Carmona”
)
41. Bibliography
They’re the cracks!
Clean Code. Uncle Bob. 2008
Kotlin For Android Developers. Antonio Leiva. 2015
GitHub AsyncAwait . metalabdesign.
Github funKTionale. MarioAriasC.
Kodein. Salomon Brys.
Karumi Blog and Katas on github.
42. Find meI am very social!
jorge@karumi.com
@flipper83
Questions?