samedi 12 décembre 2015

Soyons fainéant

C'est une situation courante : une fonction qui retournera toujours le même résultat quand elle est appelé sur le même objet. Evidemment le développeur soucieux de performance préférera la transformer en un attribut calculé une fois pour toute dans le constructeur de la classe. Mais si le résultat n'est pas toujours utilisé, le développeur encore plus soucieux décidera d'en faire un cache : le calcul sera fait une fois au premier appel puis réutilisé ensuite. Le développeur plus malin trouvera ou codera un petit outil pour rendre le code plus propre.

Kotlin simplifie et unifie le code grâce au petit mot doux lazy :

val zeus by lazy {
   try {
      InetAddress.getByName("zeus")
   } catch (e: UnknownHostException) {
      null
   }
}

Ici, zeus est une propriété nullable, donc de type InetAddress?, mais l'important est que la requête DNS ne sera faite qu'une seule fois, qu'elle soit réussie ou pas.

Aucun commentaire:

Enregistrer un commentaire