Effectivement, comme tu ne tapes pas le type de retour
Inference de type n'implique pas de ne pas être explicite sur les types de retour des fonctions. Et surtout, ca empêche pas de nommer ses fonctions décemment pour qu'on comprendre ce qu'elle fait et ce qu'elle retourne.
Ca veut juste dire que le compilateur n'a pas forcement besoin que tu explicites le type dans certains contextes. En pratique, être implicite sur les types de retour des fonctions, c'est une assez mauvaise pratique: ca force a lire l'implementation pour savoir ce qui est retourne, et si le language supporte des types avancés, genre union ou autres, ca peut t'emmener loin quand tu debugges.
Typiquement, ca c'est bien:
/// C'est assez clair ici que name() retourne une string, meme sans regarder le type de retour. Non pas que ca soit important ici, mais pour /// le code appelant, on devine aisément que le nom va être une Stringpublicfuncname()->String{// implementation}/// comme dit au dessus, c'est assez evident que name est une String, donc pas la peine de se répéterleta=name().lowercased()
Et typiquement ca c'est mal:
/// Nom de function alakon, bon courage pour savoir ce que c'est cense fairepublicfuncfoo(){// implementation, de preference bien longue avec des if imbriqués et des early return}/// bonne fete des morts pour deviner ce qu'il se passe ici.leta=foo()
[^] # Re: Définition implicites ?
Posté par groumly . En réponse au journal Non, l'inférence de types n'est pas du typage faible. Oui, elle rend les programmes plus lisibles. Évalué à 9. Dernière modification le 21 novembre 2018 à 22:05.
Inference de type n'implique pas de ne pas être explicite sur les types de retour des fonctions. Et surtout, ca empêche pas de nommer ses fonctions décemment pour qu'on comprendre ce qu'elle fait et ce qu'elle retourne.
Ca veut juste dire que le compilateur n'a pas forcement besoin que tu explicites le type dans certains contextes. En pratique, être implicite sur les types de retour des fonctions, c'est une assez mauvaise pratique: ca force a lire l'implementation pour savoir ce qui est retourne, et si le language supporte des types avancés, genre union ou autres, ca peut t'emmener loin quand tu debugges.
Typiquement, ca c'est bien:
Et typiquement ca c'est mal: