Par exemple, je dois écrire une fonction qui prend en paramètres un tableau de nombre, et qui me retourne un tableau contenant uniquement les nombres pairs.
Comment écrire cette fonction ?
Etape 1 : est-ce que ma fonction a besoin d'un nom?
- Oui, le nom m'est déjà donné ===> Cool, pas besoin de réflechir plus.
- Oui, je dois en trouver un ===> trouver un nom parlant, en rapport avec ce que la fonction doit faire. Si je ne peux pas trouver de nom court qui synthétise la finalité de la fonction, c'est peut être que je veux faire trop de chose à la fois. Je dois peut être réfléchir à redécouper mon code.
- Non, je déclare une fonction anonyme (en PHP, c'est situation est plus rare que dans d'autres langages).
function getEvenNumbers()
{
//...
}
Ce que tu vois au dessus est le minimum requis pour qu'une fonction soit structurée correctement.
Elle ne fait rien (pour l'instant), mais au moins elle ne provoquera pas d'erreur dans ton script.
- Oui, je vais avoir besoin de paramètres et de leurs types
- Non, je n'ai pas besoin de paramètres
function getEvenNumbers(array $numbers)
{
//...
}
- Oui, 2 étapes supplémentaires :
- De quel type est ma variable? ==> Définir le type de sortie et si besoin l'initialiser
- Retourner une nouvelle variable qui va servir de résultat
- Non, je n'ai pas besoin de variable de resultat
function getEvenNumbers(array $numbers): array
{
$result = [];
return $result;
}
J'écris dans mon IDE sous forme de commentaire, ou sur un bout de papier, la logique algorithmique que devrait avoir ma fonction afin de satisfaire le besoin. (Ne pas hésiter à indenter, même sur papier !!)
// Step 1 : Déclarer un tableau de "réception",
// Step 2 : Parcourir le tableau passé en paramètre,
// Step 3 : Tester si le nombre parcouru est un nombre pair,
// Step 4 : Ajouter le nombre au tableau de réception le cas échéant,
// Step 5 : Retourner le nouveau tableau.
function getEvenNumbers(array $numbers): array
{
// step 1
$result = [];
// step 2
for ($i = 0; $i < strlen($numbers); $i++) {
$num = $numbers[$i];
// step 3
if ($num % 2 === 0) {
// step 4
$result[] = $num;
}
}
// step 5
return $result;
}
Pour la mise en forme, je te laisse retourner sur la documentation : PSR-12: Extended Coding Style