2017-04-30 2 views
0

Je me demande simplement s'il y a des raisons ou un avantage d'écrire un extrait PHP avec ou sans accolades.Qu'est-ce qui est important ou implicite d'utiliser ou de ne pas utiliser d'accolades en PHP?

J'ai ces trois approches pour obtenir le suffixe ordinal des nombres. Quelle devrait être la meilleure approche dans ce cas

Approche 1: Sans « accolades » les « accolades »

function ordinalSuffix($n) { 
    //any number such as zero(0) should end with 'th' other than 1,2,3 which must be 1st 2nd 3nd 
    $appends = array('th','st','nd','rd','th','th','th','th','th','th'); 
    // using php modulus check if number is 11, 12 or 13 
    if ((($n % 100) >= 11) && (($n % 100) <= 13)) 
     return $n. 'th'."<br/>"; 
    else 
      return $n. $appends[$n % 10]."<br/>"; 
} 
//Example Usage 
$studentMarks=range(1,26); 
foreach($studentMarks as $key => $studentResult) 
//check for odd and even 
if(($key % 2) == 1) 
echo "<div class='dark'>Student - (". ($key + 1) .") Result is :".ordinalSuffix($studentResult)."</div>"; 
else 
echo "<div class='ligth'>Student - (". ($key + 1) .") Result is :".ordinalSuffix($studentResult)."</div>"; 

Approche 2: Sans « accolades » les « accolades »

function ordinalSuffix($n) { 
    //any number such as zero(0) should end with 'th' other than 1,2,3 which must be 1st 2nd 3nd 
    $appends = array('th','st','nd','rd','th','th','th','th','th','th'); 
    // using php modulus check if number is 11, 12 or 13 
    if ((($n % 100) >= 11) && (($n % 100) <= 13)): 
     return $n. 'th'."<br/>"; 
    else: 
      return $n. $appends[$n % 10]."<br/>"; 
    endif; 
} 
//Example Usage 
$studentMarks=range(1,26); 
foreach($studentMarks as $key => $studentResult): 
//check for odd and even 
if(($key % 2) == 1): 
echo "<div class='dark'>Student - (". ($key + 1) .") Result is :".ordinalSuffix($studentResult)."</div>"; 
else: 
echo "<div class='ligth'>Student - (". ($key + 1) .") Result is :".ordinalSuffix($studentResult)."</div>"; 
endif; 
endforeach; 

Méthode 3: Il emploie des "bretelles" les "accolades"

function ordinalSuffix($n) { 
    //any number such as zero(0) should end with 'th' other than 1,2,3 which must be 1st 2nd 3nd 
    $appends = array('th','st','nd','rd','th','th','th','th','th','th'); 
    // using php modulus check if number is 11, 12 or 13 
    if ((($n % 100) >= 11) && (($n % 100) <= 13)){ 
     return $n. 'th'."<br/>"; 
    } 
    else{ 
      return $n. $appends[$n % 10]."<br/>"; 
    } 
} 
//Example Usage 
$studentMarks=range(1,26); 
foreach($studentMarks as $key => $studentResult){ 
//check for odd and even 
if(($key % 2) == 1){ 
echo "<div class='dark'>Student - (". ($key + 1) .") Result is :".ordinalSuffix($studentResult)."</div>"; 
} 
else{ 
echo "<div class='ligth'>Student - (". ($key + 1) .") Result is :".ordinalSuffix($studentResult)."</div>"; 
} 
} 
+0

La forme deux-points des instructions de bloc est généralement réservée aux modèles, où un 'endif 'explicite est plus facile à repérer qu'une accolade fermante. N'utilisez pas ceci pour le code de contrôleur/classe - une certaine normalisation est bonne. – halfer

+0

@meagar pouvez-vous m'aider à le reformuler lorsque vous l'avez mis en attente ou à un conseil sur la meilleure façon de procéder? – ShapCyber

+0

@ShapCyber ​​toutes les réponses seraient prises en compte car la question est liée à l'odeur de code, qui est préférentiellement unique à chaque développeur. – fyrye

Répondre

1

Ensuite, vous jamais à vous soucier de ce code est exécuté dans le cadre de votre condition. Ne laissez pas votre futur moi, ou quiconque maintient ce code, faire une erreur stupide, évitable. Tout ce qu'il faut, c'est ajouter une ligne supplémentaire à votre déclaration IF sans l'accolade et inattendue, difficile à attraper, des bugs se produisent. C'est aussi plus facile à lire. La maintenabilité est toujours importante et ne doit pas être ignorée.

+0

Yup. L'option no-braces doit être supprimée de PHP, IMO. – ceejayoz