Le pourquoi du comment
du type Optional.
Fabrice Sznajderman
Paris JUG - 2015
Qui vous parle?
Fabrice Sznajderman
Développeur Java / Scala / Web
Twitter : @fsznajderman
Github : fabszn
Paris JUG - 2015
Paris JUG - 2015
/**
* I promise the following service will never return a NULL reference
*/
Contact c = cs.getContactById...
Paris JUG - 2015
NullPointerException
/**
* I promise the following service will never return a NULL reference
*/
Contact ...
Paris JUG - 2015
/**
* I promise the following service will never return a NULL reference
*/
Contact c = cs.getContactById...
Paris JUG - 2015
/**
* I promise the following service will never return a NULL reference
*/
Contact c = cs.getContactById...
Type Optional: Un peu de théorie...
‘Optional est un type permettant de caractériser la
présence ou l’absence de valeur’
P...
Type Optional: Un peu de théorie...
Contact c1 = null;
Contact c2 = new Contact("Hari","kovair",34);
Optional<Contact> o1 ...
Type Optional: Un peu de théorie...
Contact c1 = null;
Contact c2 = new Contact("Hari","kovair",34);
Optional<Contact> o1 ...
Type Optional: Un peu de théorie...
‘Une monade est comme une boite, vide ou ayant
un contenu, qui nous fournit des opérat...
Type Optional : Cas pratiques
Live coding...
Paris JUG - 2015
Type Optional : Conclusion
● C’est bon pour l’environnement!
● Disparition du pattern if-null
● Documentation automatique
...
final Optional<Questions> qs = getQuestions();
qs.map( q → ”Answers : ” + q.answers ).orElse(“Merci de votre attention!”)
...
Prochain SlideShare
Chargement dans…5
×

Paris jug option

255 vues

Publié le

Le pourquoi du comment du type Optional

Publié dans : Logiciels
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
255
Sur SlideShare
0
Issues des intégrations
0
Intégrations
19
Actions
Partages
0
Téléchargements
3
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Paris jug option

  1. 1. Le pourquoi du comment du type Optional. Fabrice Sznajderman Paris JUG - 2015
  2. 2. Qui vous parle? Fabrice Sznajderman Développeur Java / Scala / Web Twitter : @fsznajderman Github : fabszn Paris JUG - 2015
  3. 3. Paris JUG - 2015 /** * I promise the following service will never return a NULL reference */ Contact c = cs.getContactById(1); System.out.println(“Age =” + c.getAge());
  4. 4. Paris JUG - 2015 NullPointerException /** * I promise the following service will never return a NULL reference */ Contact c = cs.getContactById(1); System.out.println(“Age =” + c.getAge()); ...
  5. 5. Paris JUG - 2015 /** * I promise the following service will never return a NULL reference */ Contact c = cs.getContactById(1); if (c != null) { System.out.println(“Age =” + c.getAge()); } ...
  6. 6. Paris JUG - 2015 /** * I promise the following service will never return a NULL reference */ Contact c = cs.getContactById(1); if (c != null) { System.out.println(“Age =” + c.getAge()); } ...
  7. 7. Type Optional: Un peu de théorie... ‘Optional est un type permettant de caractériser la présence ou l’absence de valeur’ Paris JUG - 2015 contact présence absence
  8. 8. Type Optional: Un peu de théorie... Contact c1 = null; Contact c2 = new Contact("Hari","kovair",34); Optional<Contact> o1 = Optional.ofNullable(c1); Optional<Contact> o2 = Optional.of(c2); System.out.println("o1 = " + o1); System.out.println("o2 = " + o2); Paris JUG - 2015
  9. 9. Type Optional: Un peu de théorie... Contact c1 = null; Contact c2 = new Contact("Hari","kovair",34); Optional<Contact> o1 = Optional.ofNullable(c1); Optional<Contact> o2 = Optional.of(c2); System.out.println("o1 = " + o1); System.out.println("o2 = " + o2); Paris JUG - 2015 o1 = Optional.empty o2 = Optional[model.Contact@54bedef2]
  10. 10. Type Optional: Un peu de théorie... ‘Une monade est comme une boite, vide ou ayant un contenu, qui nous fournit des opérations au dessus de la valeur éventuellement encapsulée.’ Paris JUG - 2015 contact ou .map() .orElse() .get() .filter() ... Optional
  11. 11. Type Optional : Cas pratiques Live coding... Paris JUG - 2015
  12. 12. Type Optional : Conclusion ● C’est bon pour l’environnement! ● Disparition du pattern if-null ● Documentation automatique ● Disponible dans d’autres langages Paris JUG - 2015
  13. 13. final Optional<Questions> qs = getQuestions(); qs.map( q → ”Answers : ” + q.answers ).orElse(“Merci de votre attention!”) Paris JUG - 2015

×