I. Introduction

En tant que programmeur autodidacte qui a passé neuf ans dans cette industrie, j'ai vu beaucoup de code formidable, mais j'ai vu beaucoup plus de mauvais code. Avez-vous déjà eu à plonger dans un autre code qu'il faille lire ligne par ligne et lire des titres de variables obscurs pour que vous puissiez obtenir une vue sur ce que le code fait ? Moi plusieurs fois, et chaque fois c'est de plus en plus frustrant.

Les langages de programmation de haut niveau et de programmation orientée objet ont été conçus pour fournir un outil pour les programmeurs pour écrire du code compréhensible par l'homme qui pourrait aussi être compris par un ordinateur après compilation. Le concept général était d'avoir un moyen pour les humains de comprendre le même code que l'ordinateur, ce qui le rend plus facile à maintenir et à répandre dans les équipes.

Il s'agit d'un grand concept quand il est suivi, le problème aujourd'hui est que de nombreux programmeurs n'apprennent pas les normes, ou vont travailler pour une entreprise qui n'adopte aucune norme. Du coup, tous les programmeurs sont libres de faire les choses à «leur façon ». Même si l'indépendance est bien, la productivité s'en ressent quand les programmeurs ont à gérer les codes de quelqu'un d'autre ou à travailler avec quelqu'un dans une équipe qui fait les choses de manière différente.

C'est pourquoi il existe des directives de normalisation pour la plupart des langages de programmation. Ces lignes directrices énoncent les bonnes pratiques et les conventions de dénomination des variables, fonctions, objets, pour la plupart de chaque élément d'un langage de programmation. Comprendre et mettre en œuvre l'un de ces ensembles de normes au sein de votre équipe est votre première étape vers l'unité, et une productivité élevée.

Cet article portera sur les conventions de nommage pour PHP. Ces directives sont spécifiques à PHP telles que définies par Zend à utiliser avec le Zend Framework. Bien que ces conventions soient spécifiques à un langage, elles ne sont que des lignes directrices et en choisissant une norme pour tous les langages que vous utilisez, il est souvent plus facile d'essayer ensuite de les utiliser tous. Cependant, si vous choisissez de les adopter, la chose la plus importante est que toute votre équipe fasse la même chose.

II. Pascal Case et Camel Case?

Il y a débat en cours sur la dénomination 'Pascal Case' ou 'Upper Camel Case'. Je me souviens de retour dans ma classe de l'école secondaire de programmation, mon professeur nous a expliqué la différence entre Pascal affaire et Camel Case. Selon elle, l'affaire Pascal c'est quand la première lettre de chaque mot commence par une majuscule et leur a pas d'espaces. Camel cas est la même chose, sauf la première lettre du mot commence par une lettre minuscule.

Exemple:

Pascal case -> VoiciPascalCase (aussi appelée Upper Camel Case)
Camel Case -> voiciCamelCase (aussi appelé Lower Camel Case)

Microsoft définit également ces styles comme tels selon "Les styles de capitalisation" sur MSDN. J'ai cru comprendre que Pascal Case a été inventé parce que c'était un style utilisé par de nombreux programmeurs PASCAL. J'ai entendu ce débat à travers l'Internet aussi.

Aujourd'hui, de nombreux programmeurs appellent maintenant, ce que j'ai appelé Pascal Case, «Upper Camel Case». Cela semble être assez largement accepté en dehors du monde Microsoft. Peu importe comment vous l'appelez, l'important est de savoir où le mettre en œuvre.

III. Conventions de nommage

Probablement l'une des plus importantes à se rappeler quand vous créez votre code est d'utiliser seulement des noms de bon sens. Il n'y a pas de raison que cela devienne hors de contrôle, mais en utilisant des noms explicites dans votre code, ce sera plus facile pour vous et d'autres programmeurs plus tard.

Les conventions de nommage sont un ensemble de «lignes directrices» définissant le cas à utiliser pour nommer les éléments de votre code. Ceci est fait pour garder votre code uniforme, ce qui le rend plus facile à suivre et à comprendre. Les deux cas utilisés le plus souvent, et traités dans cet article sont Pascal Case et Camel Case.

Les conventions de nommage sont souvent définies par le langage utilisé. Elles peuvent également être définies au niveau de l'organisation, ce qui signifie que votre entreprise pourrait décider de toutes les normes d'une convention sans distinction de langage ou de la plateforme. Le plus important est que vous compreniez la convention qui est utilisée, et que vous la suiviez.

IV. Guide de nommage PHP - Zend Framework 1.9 +

Les classes - PascalCase (UpperCamelCase)

Considérations spéciales: Les noms de classe doivent correspondre au nom du répertoire sur le système de fichier qui contient le fichier de classe. Les noms doivent être alphanumériques uniquement, à l'exception d'un '_', qui doit être utilisé pour montrer la séparation dans le chemin. Si vous avez une classe fichier nommé Car.php dans le chemin '/ Modèles / Car.php' alors le nom de la classe devra être Models_Car.

Les interfaces - PascalCase (UpperCamelCase)

Considérations spéciales: Voir Les classes.

Les fonctions et méthodes - camelCase

Considérations spéciales: alphanumériques uniquement, à l'exception de '_' comme décrit ici.Le nom doit décrire le comportement de la fonction ou de la méthode. Les méthodes qui sont déclarées avec modificateur privé ou protégé de visibilité doit commencer par un _.

Les variables - camelCase

Considérations spéciales: Les noms doivent décrire les données dans la variable. Les variables déclarées avec des modificateurs de visibilité privé ou protégé doivent commencer par un _.

Les constantes - ALL_CAPS

Considérations spéciales: alphanumériques et '_' sont autorisés cependant '_' doit être utilisé pour séparer les mots dans des constantes.
 
Sélectionnez
define("CURRENT_YEAR", date('Y'));

interface Transport
{
    public function getDescription();
}

class Models_Car implements Transport
{
    private $_make = 'Ford';
    private $_model = 'Mustang';
    private $_year = 1967;

    private function _findAge()
    {
       return CURRENT_YEAR - $this->_year;
    }

    public function getDescription()
    {
        $desc = $this->_year . ", " .
        $this->_make . " " .
        $this->_model . " is " .
        $this->_findAge() . " years old.";             

        return $desc;
     }
}

$car = new Models_Car();
echo $car->getDescription();

V. Liens

Vous pouvez aussi aller voir mes autres traductions.

Un grand merci à Furr pour sa relecture orthographique.