This talk explores how code gen can be used to eliminate a class of issues and sources of developer boilerplate, as well as walking through some popular libraries and uber-specific use cases.
class Person(val firstName: String, val lastName: String)m class PersonJsonAdapter : JsonAdapter() {a override fun fromJson(reader: JsonReader): Person? {b }k }l
class Person(val firstName: String, val lastName: String)m class PersonJsonAdapter : JsonAdapter() {a override fun fromJson(reader: JsonReader): Person? {b lateinit var firstName: Stringc lateinit var lastName: Stringd }k }l
class Person(val firstName: String, val lastName: String)m class PersonJsonAdapter : JsonAdapter() {a override fun fromJson(reader: JsonReader): Person? {b lateinit var firstName: Stringc lateinit var lastName: Stringd while (reader.hasNext()) {e }n return Person(firstName, lastName)j }k }l
class Person(val firstName: String, val lastName: String)m class PersonJsonAdapter : JsonAdapter() {a override fun fromJson(reader: JsonReader): Person? {b lateinit var firstName: Stringc lateinit var lastName: Stringd while (reader.hasNext()) {e when (reader.nextName()) {f }o }n return Person(firstName, lastName)j }k }l
class Person(val firstName: String, val lastName: String)m class City(val name: String, val country: String) class Vehicle(val licensePlate: String) class Restaurant(val type: String, val address: Address) class Payment(val cardNumber: String, val type: String) class TipAmount(val value: Double) class Rating(val numStars: Int) class Correctness(val confidence: Double)
xclass RiderModelFactory class GiftCardModelFactory class PricingModelFactory class DriverModelFactory class EATSModelFactory class PaymentsModelFactory
class RiderModelFactory // -> json // -> ridermodelfactory-fractory.bin class MyAppGlobalFactory // Delegates to all discovered fractories Fractory C om ing Soon™