• [^] # Re: ouaa je ne connaissais pas la notation yoda! trop cool

    Posté par . En réponse au journal Guido van Rossum se retire de la direction de Python. Évalué à 4. Dernière modification le 17 juillet 2018 à 00:31.

    J'ai checké un peu les discussions et il y a énormément de bruit.

    Si tu veux éviter de relire les 341745 messages de la mailing list, tu as un résumé correct des choix et compromis dans la présentation Optional - The Mother of All Bikesheds by Stuart Marks: https://www.youtube.com/watch?v=Ej0sss6cq14

    Les points intéressants sont:

    • Optional is intended to provide a limited mechanism for library method return types where there is a clear need to represent "no result", and where using null for that is overwhelmingly likely to cause errors
    • We are not trying to solve a much more general problem of a maybe monad or something like that if you are a functional programmer
    • We are not trying to get rid of null references from Java entirely. Optional does not replace null references
    • L'impact du boxing sur les perfs (16 bytes overhead + dependant load qui te pourri tout)
    • L'insistance sur tous les cas où ce n'est pas adapté (presque tous en fait)
    • L'insistance sur le fait qu'il ne faut éviter le combo isPresent() / get() mais qu'en fait la moitié des cas utiles l'imposent. Ça part des exemples explicites comme l'implémentation lisible du add qu'il a choisi, à des cas implicites. Par exemple si tes méthodes retournent un Optional et que tes méthodes prennent des nullable en paramètre comment crois tu que tu passes de l'un à l'autre ? En passant ton temps à faire des get :( Sur des bases de code réelles, en appliquant la règle de n'utiliser get que si aucune autre méthode n'est applicable, on doit être encore à > 50% de get.
    • Le fait qu'en fait tout le monde est d'accord qu'on garde null. Optional est juste un pauvre wrapper pour faire compiler l'API des Stream qui sinon ne marchait pas. Comme on a été un poil plus ambitieux, on propose de l'utiliser comme marqueur l'API pour résoudre un autre problème. Sans résoudre grand chose en fait, voir en introduisant de la complexité. En l'état la seule solution à la nullité c'est de bosser sur l'analyse statique de code. Quand tu as résolu ca, Optional devient un non sujet (glass is one-quarter full).

    Le point commun avec la démission de Guido et la PEP 572, c'est le bikesheding autour du truc :) D'ailleurs ca manque un peu de troll dessus !