Ecrivez-vous des tests longs ?

Je préfère

Les tests courts
3
38%
Les tests longs
5
63%
 
Nombre total de votes : 8


dorian53
WRInaute passionné
WRInaute passionné
 
Messages: 2215
Inscription: 10 Avr 2005

Ecrivez-vous des tests longs ?

Message le Mar Fév 15, 2011 12:34

Bonjour,

Un exemple vaut mieux qu'un long discours.
Par convention, écrivez-vous

Code: Tout sélectionner
if (maFonction()) { ... }


ou

Code: Tout sélectionner
if (maFonction() == TRUE) { ... }


Et pourquoi ?

CodingPapa
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 39
Inscription: 29 Sep 2010

Re: Ecrivez-vous des tests longs ?

Message le Mar Fév 15, 2011 12:53

En général, je préfère les tests longs pour plus de lisibilité et de clarté :)

Par contre dans le cas d'un test "simple" comme celui de ton exemple, je préférerais un test court car finalement plus lisible à condition que le nom de la fonction soit explicite comme le fait qu'elle retourne un booléen.

En gros:
fonction retournant explicitement un booléen (isXXX()) -> test court
fonction retournant un booléen sans que ce soit sa fonction première (action bien déroulée par exemple) -> test long


dolmenhir
WRInaute discret
WRInaute discret
 
Messages: 66
Inscription: 23 Nov 2009

Re: Ecrivez-vous des tests longs ?

Message le Mar Fév 15, 2011 16:50

J'ai voté court car j'aime bien les formules synthétiques pour des inclusions simples du type
Code: Tout sélectionner
<?php echo ($mavar!=""?"c'est pas vide":"c'est vide");?>

mais certains tests particulièrement longs et/ou complexes ne peuvent se contenter de cela.


Julia41
WRInaute passionné
WRInaute passionné
 
Messages: 1765
Inscription: 31 Aoû 2007

Re: Ecrivez-vous des tests longs ?

Message le Mar Fév 15, 2011 16:55

Personnellement que des tests long, c'est beaucoup plus rapide à traiter et j'utilise des "vrais" tests (3 égals, et pas 2).

Code: Tout sélectionner
var_dump(maFonction()); /// retourne int(100)
if (maFonction()) {
ok
if (maFonction() === true) {
pas ok

C'est plus long à débuguer quand ça marche pas, mais le code est nettement plus propre et sécuriser: on sait réellement ce qui sort.


dorian53
WRInaute passionné
WRInaute passionné
 
Messages: 2215
Inscription: 10 Avr 2005

Re: Ecrivez-vous des tests longs ?

Message le Mer Fév 16, 2011 10:03

@dolmenhir
Ok pour l'opérateur ternaire mais à titre exceptionnel.

@Julia41
Oui c'est plus propre et plus sûr, ma seule réticence sur ce test est qu'il est plus gourmand en traitement (valeur + type).
Et aussi que les types et PHP c'est pas ce qui ce fait de mieux donc c'est vrai que paradoxalement ça augmente les risques d'erreurs.

J'ai voté long également uniquement pour la lisibilité.


Julia41
WRInaute passionné
WRInaute passionné
 
Messages: 1765
Inscription: 31 Aoû 2007

Re: Ecrivez-vous des tests longs ?

Message le Mer Fév 16, 2011 20:24

dorian53 a écrit:@Julia41
Oui c'est plus propre et plus sûr, ma seule réticence sur ce test est qu'il est plus gourmand en traitement (valeur + type).
Et aussi que les types et PHP c'est pas ce qui ce fait de mieux donc c'est vrai que paradoxalement ça augmente les risques d'erreurs.

Légende urbaine qu'il prends plus de temps :
Si c'est un "if === true" il y a moins de vérifications à faire.
Pour un "if === false" dès qu'il ne match pas, il s'arrête, c'est donc nettement plus rapide.


dorian53
WRInaute passionné
WRInaute passionné
 
Messages: 2215
Inscription: 10 Avr 2005

Re: Ecrivez-vous des tests longs ?

Message le Mer Fév 16, 2011 22:09

Pas d'après les bench que j'ai fait et lu : http://www.phpbench.com/


Julia41
WRInaute passionné
WRInaute passionné
 
Messages: 1765
Inscription: 31 Aoû 2007

Re: Ecrivez-vous des tests longs ?

Message le Jeu Fév 17, 2011 0:00

en effet pour un "basique" true false (et encore)
là où il y a un énorme gain c'est pour le :
if ($a === '3');
et
if ($a == 3);

Là j'ai un bon gain.


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité