8797 sujets
Par exemple pour une série de fonction de validation de données ou tu veux que toutes les fonctions renvoient un booléen tu pourrais avoir un truc du genre :
preg_match renvoi un entier (1 ou 0)
Sans transtypage :
Avec :
Modifié par jb_gfx (10 May 2012 - 15:03)
preg_match renvoi un entier (1 ou 0)
Sans transtypage :
function validateRegex($value, $regex)
{
$res = preg_match($regex, $value);
if ($res === 0)
{
return FALSE;
}
return TRUE;
}
Avec :
function validateRegex($value, $regex)
{
return (bool)preg_match($regex, $value);
}
Modifié par jb_gfx (10 May 2012 - 15:03)
Je ne suis pas un vrai dev, mais je vais tenter. Un typage fort aide notamment au debuggage.
Imaginons l'exemple suivant:
Au milieu du code on change le type pour formater avant l'affichage.
Mais on a oublié qu'à la fin du code on utilise cette variable pour gérer la pagination. Dans cet exemple, la pagination ne sera jamais affichée car $nbMessages sera interprétée et convertie à la valeur 0.
Protéger le type empêche de créer ce genre d'erreurs qui sont longues à débugguer car cela ne provoque pas d'erreur. Si $nbMessages devait rester un entier, la ligne 310 provoquerait une erreur et le bug immédiatement décelé.
De plus il peut y avoir des avantages de performances, en ayant des plages de mémoire fixes réservées à des variables. Avec du typage dynamique, c'est la fête au slip dans la mémoire…
Imaginons l'exemple suivant:
10. $nbMessages = 13;
…
// ici 300 lignes de code
…
310. $nbMessages = 'Vous avez'.$nbMessages.' messages';
…
// ici 300 lignes de code
…
640. if ($nbMessages > 10) {
641. // affiche une pagination
642. }
Au milieu du code on change le type pour formater avant l'affichage.
Mais on a oublié qu'à la fin du code on utilise cette variable pour gérer la pagination. Dans cet exemple, la pagination ne sera jamais affichée car $nbMessages sera interprétée et convertie à la valeur 0.
Protéger le type empêche de créer ce genre d'erreurs qui sont longues à débugguer car cela ne provoque pas d'erreur. Si $nbMessages devait rester un entier, la ligne 310 provoquerait une erreur et le bug immédiatement décelé.
De plus il peut y avoir des avantages de performances, en ayant des plages de mémoire fixes réservées à des variables. Avec du typage dynamique, c'est la fête au slip dans la mémoire…