Jump to content

Normes de développement


Recommended Posts

Avez vous déjà lu la documentation à propos des normes de développement Prestashop ?

 

Y a plein de chose qui ne vont pas.

 

La première c'est que cette norme n'est pas standard. Il y a des conventions de grandes envergures enseignées et adoptées par de nombreux développeurs. 

Utiliser une nouvelle norme ne sert à rien et surtout bloque les développeurs lors de l'utilisation de Prestashop (lecture du code difficile et écriture d'un code correcte plus longue). Il faut de plus adapter ses outils de développement à Prestashop (installer un nouveau standard dans PHP CodeSniffer).

De plus les librairies externes ne vont pas utiliser ce standard donc lire le code va être encore plus compliqué.

 

Ensuite il y a des incohérences :

  • SQL / nom de table : 
    Les noms de table doivent être au singulier : "ps_order".

    Dans Prestashop c'est ps_orders c'est un détail mais l'exemple est mal choisi
  • PHP / Noms des variables : 
    Utilisez des caractères minuscules, et séparez les mots par des caractères soulignés. N'utilisez jamais le format camelCase. 

    Dans les modules $this->displayName est obligatoire

     

Et aussi des trucs que je n'aime pas :

  • PHP / Blocs

    Les accolades sont à éviter lorsqu'elles n'encadrent qu'une seule instruction ou une combinaison de déclarations :

    Donc 
     

    <?php
    
    /* ça c'est bien */
    if ($my_var)
        return true;
    
    /* ça non */
    if ($my_var) {
        return true;
    }
    
    /* mais ça ? */
    if ($my_var) {
        /* je ne suis pas une instruction */
        return true;
    }
    
    /* et ça ? il y a une erreur, bon courage pour la trouver */
    function test()
    {
        for ($i = 0; $i < 17; $i++)
            if ($my_array[$i] == $value)
            {
                $result[] = $my_array[$i];
                for ($i = 0; $i < 17; $i++)
                    if ($my_array[$i] == $value)
                        $failed++;
                    else
                    {
                        $result[] = $my_array[$i];
                        return $result;
                    }
                return $result;
            }
            else
                if ($my_array[$i] == $value)
                    for ($i = 0; $i < 17; $i++)
                    {
                        $result[] = $my_array[$i];
                        for ($i = 0; $i < 17; $i++)
                            if ($my_array[$i] == $value)
                            {
                                $result[] = $my_array[$i];
                                return $result;
                            }
                            else
                                $failed++;
                        return $result;
                    }
            if ($my_array[$i] == $value)
                for ($i = 0; $i < 17; $i++)
                {
                    $result[] = $my_array[$i];
                    for ($i = 0; $i < 17; $i++)
                        if ($my_array[$i] == $value)
                        {
                            $result[] = $my_array[$i];
                            return $result;
                        }
                        else
                            $failed++;
                    return $result;
                }
        return $result;
    } 
    ?>
    
  • toujours mettre des accolades, c'est quand même plus simple.

Bref plein de choses à revoir et c'est un sujet important, ça conditionne la lisibilité du code de Prestashop et des modules tiers.

 

Y a t il un espace pour discuter de cela ?

Link to comment
Share on other sites

Hello shagshag, bon sujet que voilà !

Je fais mon propre retour d'expérience à ce sujet afin de mettre en valeur le "pourquoi finalement, je (et l'équipe) n'utilise(ons) pas cette norme".

Quand elle est arrivée, je me suis dit "tient, super bonne initiative, on va enfin pouvoir s'appuyer sur des normes plus proches de l'environnement sur lequel on travaille".

Je lis en diagonale l'article, je remarque rapidement quelques points qui ne me sont pas familiers.
Sans citer ceux de Shagshag, l'exemple le plus frappant : le manque de l'underscore pour les méthodes privées, foo() au lieu de _foo(), bref soit, continuons, grand débat ouvert dans l'open space avec analogies sur d'autres normes, on se lance des pommes et se brûlons au café ! :)

Je vois le validateur, cool, j'installe le standard dans le codeSniffer pluggué sur mon petit <insert IDE here> (personnellement, c'est PhpStorm, mais même combat sur ceux des autres devs).

J'ouvre un de mes modules afin de faire le test, ok je vois du coup plein de notices de validation, l'IDE passe à l'orange (forcément, ils ont été fait sous une autre norme), je me dis que ça va nous être bien pratique à l'avenir.

J'ouvre un module natif, et là... c'est le drame © : le validateur s'emballe. En fait je me rends compte qu'aucune classe de module n'est conforme à la norme (faites le test, chez vous en 1.5, satisfait ou remboursé !)...

J'ajoute un PS : Je doute que le validateur des modules tiers Prestashop fasse le contrôle de la norme, encore beaucoup de modules tiers (bien que très fonctionnels) sont encore très fouilli (pour ne pas dire moches) au niveau du code.

------------------

En conclusion, un peu d'humour, un peu de cynisme, mais c'est un retour plutôt négatif qui est surtout là dans le but d'alimenter cette discussion importante pour les devs que nous sommes.

C'est un effort louable que de donner des normes, mais le fait de :

- Improviser des normes au détriment de celles internationnales présentes depuis longtemps rends déjà la chose bancale...
- Ne pas les appliquer en interne sur ses propres modules, fait vraiment un "faites ce que je dis, pas ce que je fais"
- Ne pas les utiliser outre mesure / ne pas mettre en avant une volonté de faire ce que j'appellerai le "code propre" ne donne vraiment pas envie d'investir du temps la dedans, autant apprendre des méthodes déjà éprouvées...

Tout ça donne vraiment cette impression de "pas fini" ainsi que de "les devs en veulent, fournissez en une, même si on ne va jamais s'en servir ils seront contents"...

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...