Les petites victoires personnelles pour un développeur

Même un développeur peut avoir ses victoires personnelles lorsqu'il code

Si vous regardez de l'extérieur le monde du développement informatique, certainement que vous vous êtes déjà dit que ce monde est fou, avec tous ces hiéroglyphes visibles sur un écran qui sont indéchiffrables pour le commun des mortels.

Sauf, que cela correspond juste à une langue nouvelle, donc, comme vous n'arrivez pas à lire une langue étrangère, vous n'arrivez pas à lire le code écrit par les développeurs.

Mais comme un écrivain, les développeurs sérieux, cherchent toujours la meilleure phrase, celle qui apportera le résultat souhaité de la plus belle des manières.

Les développeurs sont, normalement, tous, à la recherche de cette optimisation syntaxique permettant de rendre leur texte le plus performant possible en consommant le moins de ressources possibles.

Mais, chez certains, seul le résultat compte et c'est pour cela que nous sommes beaucoup de développeurs à critiquer le travail de nos confrères.

Comme un beau geste sportif qui perd tout son sens si le résultat obtenu est nulle, pour un développeur professionnel, il faut obtenir un équilibre entre du beau code et son efficacité.

Dernièrement, dans le cadre du développement d'un de mes modules, j'ai dû trouver une solution à un problème simple en apparence, mais complexe en informatique.

Je souhaitais simplement créer une fonction qui devait me retourner la date de début et de fin du trimestre précédent la date du jour.

Même mentalement, vous allez réfléchir quelques secondes pour obtenir ces deux dates.

Alors imaginait reproduire cela en langage informatique.

Certains développeurs vous diront qu'il suffit de demander à l'intelligence artificielle à la mode pour obtenir un résultat rapidement.

J'ai donc demandé à l'IA de me coder cette fonction pour gagner du temps et voici le résultat :

function trimestre_precedent($date) {
    $date = new DateTime($date);
    $mois = $date->format('n');
    $annee = $date->format('Y');

    if ($mois <= 3) {
        $trimestre = 4;
        $annee--;
    } else {
        $trimestre = ceil($mois / 3) - 1;
    }

    $premier_jour = new DateTime("$annee-" . (($trimestre - 1) * 3 + 1) . "-01");
    $dernier_jour = new DateTime("$annee-" . ($trimestre * 3) . "-" . date('t', strtotime("$annee-" . ($trimestre * 3))));

    return array(
        'premier_jour' => $premier_jour->format('Y-m-d'),
        'dernier_jour' => $dernier_jour->format('Y-m-d')
    );
}

Je ne l'ai pas testé, car j'avais déjà codé la mienne, mais elle semble valide.

Maintenant, voici ce que j'ai codé pour répondre à mon besoin :

public function medGetTrimestreDate()
{
    list($year, $month) = explode('-', date('Y-m', strtotime(date('Y-m-01') . ' -3 Months')));
    $firstMonth = 3 * floor(($month - 1) / 3) + 1;

    return [
        'from' => date('Y-m-d', strtotime($year . '-' . $firstMonth)),
        'to' => date('Y-m-t', strtotime($year . '-' . ($firstMonth + 2))),
    ];
}

Personnellement, je trouve que la beauté de mon code est bien supérieure à celle produite par l'IA.

Mais comme la beauté est très subjective, il faudrait surtout tester les performances des deux fonctions pour savoir laquelle est vraiment la meilleure, car seule la performance peut départager deux codes informatiques, en termes de consommation de ressources et de rapidité d'exécution.

Malheureusement, je n'ai pas effectué ce test, restant sur cette victoire personnelle de produire un code, réduit à sa plus simple expression et donnant le résultat attendu.

Parce que oui, un développeur peut sauter sur sa chaise simplement en arrivant à coder ce qu'il souhaite et de la plus belle des manières.

Alors, voilà, je vous partage juste ma petite victoire personnelle de ces dernières semaines avec cette simple fonction qui servira certainement à d'autres développeurs ayant pris le temps de me lire.

N'hésitez pas à commenter cet article si cette fonction vous a aidé dans vos développements, cela fait aussi plaisir de savoir que la connaissance se partage sur Internet.

Discussions