Functionnal programming

Vous avez entendu beaucoup parlé de ‘Functionnal programming’ mais n’arrive pas vraiment à comprendre ce qu’il est vraiment? Reprenez votre souffle, je vous le présente tout de suite 😉

Définition

la programmation fonctionnelle est un paradigme de programmation – un style de construction de la structure et des éléments de programmes informatiques – qui traite le calcul comme une évaluation de fonctions mathématiques et évite les données changeantes et mutables. C’est un paradigme de programmation déclarative, ce qui signifie que la programmation est faite avec des expressions ou des déclarations [1] au lieu d’instructions. [Wikipédia]

Et vous dites: “Je comprend rien de tout ça…”. Allons-y, je vous explique

Les concepts de base

Les fonctions sont pures

Une fonction appelée plusieurs fois avec les mêmes arguments renverra toujours la même valeur. Toujours. Aucun effet secondaire ne se produit pendant l’exécution du fonction.

Exemple [PHP]

public function sum (int $a, int $b) : int
{
    return $a + $b;
}

ce fonction retournera toujours la même sortie avec les mêmes arguments.

Un fonction qui génère une chaîne ou un nombre aléatoire ne sera jamais pure car: avec les mêmes arguments, le fonction peut renvoyer une sortie différente

Example [PHP]

rand (int $min, int $max)

First class

Cela signifie que vous pouvez transmettre un fonction en tant que paramètres d’un autre fonction. Ce concept est très familier pour les développeurs Javascript et PHP

Example [PHP – Doctrine]

protected function functionName(){
    $qb =  $this->createQueryBuilder("alias");
    return $qb->where($qb->expr()->isNotNull("alias.colname"))
        ->getQuery()->getResult();
}

Les variables sont immuables

cela signifie qu’après avoir initialisé une variable avec une valeur, sa valeur ne changera jamais

example :

$index = 0;
$index ++; // wrong
$new_variable = $index + 1; // good

Referential transparency

Être très simple et clair; ces concepts signifient que: si une fonction renvoie un type, cette fonction ne renverra que ce type, une fonction qui n’a pas de valeur de retour n’a pas de sortie

Example :

public function somme($a, $b) {
    return $a + $b;
}

Partout où nous appelons cette fonction, nous sommes sûrs qu’elle renvoie la somme des deux paramètres passés et rien d’autre.

Exemple non-conforme:

public function moinsUn($x) {
    echo 'this is value of passed parameters - 1 : ' . $x - 1;
    return $x - 1;
}

Quel est le problème ici? Si certains développeurs souhaitent utiliser cette fonction, il s’attend à ce que la valeur de retour ne soit qu’un entier. Mais cette fonction affiche aussi un message. C’est un comportement inattendu

Basé sur l’expression lambda

Ce concept n’est pas nouveau pour les développeurs Javascript.

Vous n’êtes pas obligé de donner un nom à votre méthode

Exemple

var x = function(a, b) {
   //some action 
}

Cet article a été une traduction de ce dépôt github : https://github.com/Randriamitsiry/functionnal_programming_concepts

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *