{"id":3249,"date":"2022-06-14T12:14:50","date_gmt":"2022-06-14T10:14:50","guid":{"rendered":"https:\/\/devbloomppm.wpengine.com\/?p=3249"},"modified":"2026-08-04T17:16:33","modified_gmt":"2026-08-04T15:16:33","slug":"planisware-focus-sur-les-bonnes-pratiques-de-nommage","status":"publish","type":"post","link":"https:\/\/bloomppm.com\/fr\/planisware-focus-sur-les-bonnes-pratiques-de-nommage\/","title":{"rendered":"Planisware : focus sur les bonnes pratiques de nommage"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"3249\" class=\"elementor elementor-3249\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-22f5647 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"22f5647\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-e69c542\" data-id=\"e69c542\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b2c4aed elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"b2c4aed\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fb764c9 elementor-widget elementor-widget-heading\" data-id=\"fb764c9\" data-element_type=\"widget\" data-e-type=\"widget\" id=\"title1\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-medium\">Probl\u00e9matique<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7c1997c elementor-widget elementor-widget-text-editor\" data-id=\"7c1997c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Lorsque l\u2019on s\u2019attache \u00e0 mettre en \u0153uvre des bonnes pratiques de nommage sous Planisware, 2 grandes familles d\u2019objets sont \u00e0 prendre en compte :<\/p><p style=\"padding-left: 40px;\">1. les objets d\u2019environnement Planisware (formules nomm\u00e9es, tables, champs suppl\u00e9mentaires\u2026)<br \/>2. les variables, fonctions et m\u00e9thodes d\u00e9finies en script OJS<\/p><p>Le respect de normes dans le d\u00e9veloppement est fondamental, car il permet la maintenabilit\u00e9 du code au cours de la vide d\u2019une application. Le non-respect de conventions pour le nommage des objets et l\u2019\u00e9criture du code rendra les corrections et \u00e9volutions plus couteuses (en temps et en \u00e9nergie) et augmentera les risques de r\u00e9gression (dus en g\u00e9n\u00e9ral \u00e0 une mauvaise compr\u00e9hension du param\u00e9trage).<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b0956d7 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"b0956d7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-74cdd93 elementor-widget elementor-widget-heading\" data-id=\"74cdd93\" data-element_type=\"widget\" data-e-type=\"widget\" id=\"title2\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-medium\">Bonnes pratiques de nommage pour les objets Planisware<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4827a19 elementor-widget elementor-widget-text-editor\" data-id=\"4827a19\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Afin d\u2019identifier rapidement la nature des objets d\u2019environnement Planisware, il est fortement recommand\u00e9 d\u2019utiliser une convention de nommage homog\u00e8ne. L\u2019\u00e9diteur Planisware propose une convention assez simple et pratique. Elle est \u00e0 ce jour commun\u00e9ment appliqu\u00e9e dans la plupart des applications d\u00e9velopp\u00e9es sous Planisware. D\u2019ailleurs, elle est utilis\u00e9e dans le param\u00e9trage Processes standard.<\/p><p>De mani\u00e8re g\u00e9n\u00e9rale chaque objet aura un nom construit sur le mod\u00e8le suivant :<\/p><p><strong>&lt;DESCRIPTION_COMPLEMENTAIRE&gt;<\/strong><\/p><p><span style=\"text-decoration: underline;\">Exemple :<\/span> <strong>GPO_AA_B_TO_BE_DELETED<\/strong><\/p><p>Ici on prend une application fictive appel\u00e9e <strong>GPO<\/strong> (Gestion de Projets Op\u00e9rationnelle). Il s\u2019agit ici d\u2019un objet de type champ suppl\u00e9mentaire (additional attribute) que l\u2019on indiquera donc <strong>AA.<\/strong> La derni\u00e8re partie permet de pr\u00e9ciser :<\/p><p style=\"padding-left: 40px;\">\u2192<strong> le type de retour de l\u2019objet (bool\u00e9en, cha\u00eene, nombre, dur\u00e9e ou date) lorsque c\u2019est pertinent (pour une formule nomm\u00e9e ou un attribut suppl\u00e9mentaire)<\/strong><br \/><strong>\u2192 des \u00e9l\u00e9ments de description permettant de comprendre rapidement le r\u00f4le de cet objet<\/strong><\/p><p><strong>&lt;ID_APPLI_OU_CLIENT&gt;<\/strong><\/p><p>Cette partie du nom contient donc une abr\u00e9viation permettant de savoir rapidement l\u2019application dont il s\u2019agit. Pour le param\u00e9trage Planisware ce sera g\u00e9n\u00e9ralement l\u2019abr\u00e9viation du module auquel cet objet est rattach\u00e9 : <strong>_PM, PORT<\/strong> etc\u2026<\/p><p>Historiquement les principaux modules Planisware poss\u00e9daient les abr\u00e9viations suivantes :<\/p><p style=\"padding-left: 40px;\">\u2192<strong> IF:<\/strong> Infra<br \/>\u2192 <strong>IT:<\/strong> Infra IT<br \/>\u2192<strong> IP:<\/strong> Infra Pharma<br \/>\u2192<strong> IS:<\/strong> Issue<br \/>\u2192 <strong>AD:<\/strong> Admin<br \/>\u2192 <strong>PM:<\/strong> Project Management<br \/>\u2192 <strong>RM<\/strong>: Resource Management<br \/>\u2192 <strong>PE:<\/strong> Parametric Estimation<br \/>\u2192 <strong>SI:<\/strong> Simulation<br \/>\u2192 <strong>PW:<\/strong> Project Wizard<br \/>\u2192 <strong>CO:<\/strong> Collaboration<br \/>\u2192 <strong>WT<\/strong>: WBS Type<br \/>\u2192 <strong>ML:<\/strong> Multi-Level<br \/>\u2192 <strong>PO:<\/strong> Porfolio<\/p><p><strong>&lt;TYPE_OBJET&gt;<\/strong><\/p><p>Cette partie est la plus format\u00e9e et la plus importante, car elle permet d\u2019un seul coup d\u2019\u0153il de faire la diff\u00e9rence par exemple entre une formule nomm\u00e9e (calcul\u00e9e) et un champ suppl\u00e9mentaire (stock\u00e9).<\/p><p>Voici la liste des principales abr\u00e9viations commun\u00e9ment utilis\u00e9es dans la communaut\u00e9 des d\u00e9veloppeurs Planisware :<\/p><p style=\"padding-left: 40px;\">\u2192 <strong>AA:<\/strong> Additional Attribute<br \/>\u2192<strong> AL:<\/strong> Alert<br \/>\u2192 <strong>AT:<\/strong> Attribute Type<br \/>\u2192 <strong>BS:<\/strong> Breakdown Structure<br \/>\u2192 <strong>CC:<\/strong> Composite Curve<br \/>\u2192 <strong>CF :<\/strong> Cost Field<br \/>\u2192 <strong>ET:<\/strong> Expenditure Type<br \/>\u2192 <strong>LO:<\/strong> Lock<br \/>\u2192 <strong>MS:<\/strong> Macro sequence<br \/>\u2192 <strong>MC:<\/strong> Manager for charts<br \/>\u2192 <strong>MO:<\/strong> Multiple operation<br \/>\u2192 <strong>NF:<\/strong> Named Formula<br \/>\u2192 <strong>JS:<\/strong> OPX2 script macro<br \/>\u2192 <strong>PS:<\/strong> Parameter Set<br \/>\u2192 <strong>PT:<\/strong> Permanent Table<br \/>\u2192 <strong>RA:<\/strong> Relation Attribute<br \/>\u2192 <strong>RE:<\/strong> REport<br \/>\u2192 <strong>SF:<\/strong> Symbolic Field<br \/>\u2192<strong> ST:<\/strong> STyle<br \/>\u2192 <strong>SV:<\/strong> Simulation Variable<br \/>\u2192 <strong>TA:<\/strong> Table Agregation<br \/>\u2192<strong> TT:<\/strong> Temporary Table<br \/>\u2192 <strong>UM:<\/strong> Update Macro<\/p><p>Comme on peut le constater en g\u00e9n\u00e9ral on pr\u00e9f\u00e8re utiliser les termes en anglais pour \u00e9viter toute confusion. Cependant, certaines applications pr\u00e9f\u00e8rent appliquer des traductions en fran\u00e7ais. Par exemple <strong>NF<\/strong> (Named Formula) peut se transformer en <strong>FN<\/strong> (Formule nomm\u00e9e). Ce n\u2019est pas une obligation, mais de par notre exp\u00e9rience, nous avons constat\u00e9 que la version en anglais s\u2019av\u00e8re \u00eatre plus simple et plus universelle.<\/p><p><strong>&lt;TYPE_RETOUR&gt;<\/strong><\/p><p>Comme indiqu\u00e9 pr\u00e9c\u00e9demment, le type de retour n\u2019est pas obligatoire dans la mesure o\u00f9 tous les objets n\u2019en ont pas n\u00e9cessairement.<\/p><p>Les objets suivants poss\u00e8dent un type de retour :<\/p><p style=\"padding-left: 40px;\"><strong>\u2192 Champ suppl\u00e9mentaire<\/strong><br \/><strong>\u2192 Formule nomm\u00e9e<\/strong><\/p><p>Voici la liste des principales abr\u00e9viations de type de retour utilis\u00e9es dans la communaut\u00e9 des d\u00e9veloppeurs Planisware :<\/p><p style=\"padding-left: 40px;\">\u2192 <strong>N:<\/strong> number<br \/>\u2192 <strong>S:<\/strong> string<br \/>\u2192 <strong>B:<\/strong> boolean<br \/>\u2192<strong> D:<\/strong> date<br \/>\u2192 <strong>U:<\/strong> duration<br \/>\u2192 <strong>T:<\/strong> notepad<br \/>\u2192<strong> X:<\/strong> attribute type<\/p><p>Une fois encore, l\u2019exp\u00e9rience a montr\u00e9 qu\u2019il est plus compr\u00e9hensible et universel, pour des d\u00e9veloppeurs, d\u2019utiliser des abr\u00e9viations en anglais. Il convient toutefois de faire attention au param\u00e9trage de certaines applications dont le type sera indiqu\u00e9 en fran\u00e7ais ce qui peut \u00eatre perturbant au premier abord (exemple <strong>C<\/strong> pour \u00ab Cha\u00eene \u00bb au lieu de <strong>S<\/strong>).<\/p><p><strong>&lt;DESCRIPTION_COMPLEMENTAIRE&gt;<\/strong><\/p><p>C\u2019est la partie la plus libre du nom, mais elle reste essentielle pour les d\u00e9veloppeurs. Il est en effet primordial de choisir une description sans ambig\u00fcit\u00e9. Choisir un nom pr\u00eatant \u00e0 confusion peut avoir deux effets :<\/p><p style=\"padding-left: 40px;\"><strong>\u2192 Obliger un futur d\u00e9veloppeur \u00e0 rentrer dans le d\u00e9tail de la d\u00e9finition technique de l\u2019objet pour comprendre son utilisation<\/strong><br \/><strong>\u2192 Faire un contre-sens complet sur l\u2019utilisation de l\u2019objet<\/strong><\/p><p>En cas de doute, il peut \u00eatre judicieux de demander l\u2019avis externe d\u2019un coll\u00e8gue.<\/p><p>Un d\u00e9bat se pose parfois sur la langue \u00e0 utiliser pour cette description :<\/p><p style=\"padding-left: 40px;\"><strong>\u2192 Doit-on utiliser l\u2019anglais comme pour les autres parties du nom de nos objets ?<\/strong><br \/><strong>\u2192 Ou est-il plus judicieux d\u2019utiliser le fran\u00e7ais pour faciliter la compr\u00e9hension fonctionnelle ?<\/strong><\/p><p>La question se pose, car cette deuxi\u00e8me m\u00e9thode permet d\u2019\u00e9viter la traduction de termes m\u00e9tiers et acronymes tr\u00e8s sp\u00e9cifiques. Le d\u00e9bat reste ouvert. Cependant, par exp\u00e9rience, nous avons constat\u00e9 qu\u2019il \u00e9tait souvent plus simple et plus pertinent de conserver un descriptif en fran\u00e7ais pour les applications fran\u00e7aises qui poss\u00e8dent des concepts m\u00e9tier \u00e0 la fois difficilement traduisibles en anglais et sp\u00e9cifiques \u00e0 l\u2019activit\u00e9.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5c79a14 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"5c79a14\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a4f1bfb elementor-widget elementor-widget-heading\" data-id=\"a4f1bfb\" data-element_type=\"widget\" data-e-type=\"widget\" id=\"title3\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-medium\">Conventions d\u2019\u00e9criture du code Plansiware (OJS)<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c78c4d9 elementor-widget elementor-widget-text-editor\" data-id=\"c78c4d9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Sur ce point il n\u2019existe \u00e0 notre connaissance pas de recommandations officielles de l\u2019\u00e9diteur sur ce sujet. Les conseils suivants sont issus de nos retours d\u2019exp\u00e9rience.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-29d2b05 elementor-widget elementor-widget-heading\" data-id=\"29d2b05\" data-element_type=\"widget\" data-e-type=\"widget\" id=\"title4\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-medium\">En t\u00eate et commentaires<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7527fc1 elementor-widget elementor-widget-text-editor\" data-id=\"7527fc1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Le versionning du code contenu dans les scripts Planisware est essentiel. En effet, il permet de conna\u00eetre avec pr\u00e9cision le contenu du code ex\u00e9cut\u00e9 dans l\u2019application et de suivre le contenu des \u00e9volutions apport\u00e9es.<\/p><p>Si vous n\u2019avez pas d\u2019en-t\u00eate \u00e0 disposition, un bon point de d\u00e9part peut \u00eatre de reprendre un script du standard Processes pour s\u2019inspirer de l\u2019en-t\u00eate. Il est aussi tout \u00e0 fait possible de vous baser sur des standards de votre entreprise. L\u2019essentiel est d\u2019avoir un suivi des versions.<\/p><p>Voici un exemple d\u2019en-t\u00eate de script :<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1382932 elementor-widget elementor-widget-image\" data-id=\"1382932\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"565\" height=\"277\" src=\"https:\/\/bloomppm.com\/wp-content\/uploads\/2022\/06\/Planisware_focus_sur_les_bonnes_pratiques_de_nommage_image_1-e1785745821735.jpg\" class=\"attachment-large size-large wp-image-3250\" alt=\"codage\" srcset=\"https:\/\/bloomppm.com\/wp-content\/uploads\/2022\/06\/Planisware_focus_sur_les_bonnes_pratiques_de_nommage_image_1-e1785745821735.jpg 565w, https:\/\/bloomppm.com\/wp-content\/uploads\/2022\/06\/Planisware_focus_sur_les_bonnes_pratiques_de_nommage_image_1-e1785745821735-300x147.jpg 300w\" sizes=\"(max-width: 565px) 100vw, 565px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-601fb45 elementor-widget elementor-widget-text-editor\" data-id=\"601fb45\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Exemple de script standard Planisware<\/p><p><span style=\"text-decoration: underline;\"><strong>Astuce :<\/strong><\/span> il est \u00e9galement possible d\u2019ajouter une instruction \u00ab writeLn \u00bb indiquant le nom du script et la version \u00e0 la fin du code. De cette mani\u00e8re, un simple coup d\u2019\u0153il dans les logs vous permettra de conna\u00eetre la version du script \u00e9valu\u00e9e au d\u00e9marrage de l\u2019application.<\/p><p>Exemple :<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d7d079a elementor-widget elementor-widget-text-editor\" data-id=\"d7d079a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>writeln(\u00ab\u00a0Script GPO_JS_MON_SCRIPT.ojs loaded version $Revision: 1.03 $\u00a0\u00bb);<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7e8e3de elementor-widget elementor-widget-heading\" data-id=\"7e8e3de\" data-element_type=\"widget\" data-e-type=\"widget\" id=\"title5\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-medium\">En-t\u00eate par fonction<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-06c8b04 elementor-widget elementor-widget-text-editor\" data-id=\"06c8b04\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Un en-t\u00eate (commentaire \u00e0 la mode javadoc) peut \u00eatre ajout\u00e9 avant chaque fonction. Ces quelques lignes de commentaires permettent d\u2019indiquer :<\/p><p style=\"padding-left: 40px;\"><strong>\u2192 le r\u00f4le de la fonction<\/strong><br \/><strong>\u2192 les arguments et leur type<\/strong><br \/><strong>\u2192 le type de retour de la fonction<\/strong><\/p><p>Cette mani\u00e8re de faire permet une meilleure maintenabilit\u00e9 du code OJS.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1dd538a elementor-widget elementor-widget-heading\" data-id=\"1dd538a\" data-element_type=\"widget\" data-e-type=\"widget\" id=\"title6\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-medium\">Nommage des variables<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-620d7ca elementor-widget elementor-widget-text-editor\" data-id=\"620d7ca\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Le code OJS a pour caract\u00e9ristique commune avec le JavaScript (dont il d\u00e9rive) le fait que ses variables ne sont pas typ\u00e9es. Une m\u00eame variable peut successivement contenir une date, une cha\u00eene de caract\u00e8re puis un bool\u00e9en sans aucun cast (transtypage) pr\u00e9alable. Cette caract\u00e9ristique peut \u00eatre tr\u00e8s puissante, mais, de par sa permissivit\u00e9, n\u00e9cessite de la m\u00e9thode pour ne pas rapidement devenir difficile \u00e0 lire et \u00e0 maintenir.<\/p><p>Pr\u00e9fixer les variables (et respecter les types pr\u00e9fix\u00e9s !) peut \u00eatre une bonne m\u00e9thode pour am\u00e9liorer l\u2019organisation et la lisibilit\u00e9 du code.<\/p><p>Voici une liste d\u2019exemples de pr\u00e9fixes qu\u2019il est possible d\u2019utiliser :<\/p><p style=\"padding-left: 40px;\">\u2192 <strong>o_<\/strong> dans le cas d\u2019un objet Planisware<br \/>\u2192 <strong>v_<\/strong> pour un vecteur (vector)<br \/>\u2192 <strong>h_<\/strong> pour une table de hachage (hashtable)<br \/>\u2192 <strong>s_<\/strong> dans le cas d\u2019une cha\u00eene de caract\u00e8re (string)<br \/>\u2192 <strong>n_<\/strong> dans le cas d\u2019un nombre (number)<br \/>\u2192 <strong>b_<\/strong> dans le cas d\u2019un bool\u00e9en (boolean)<br \/>\u2192<strong> d_<\/strong> dans le cas d\u2019une date (date)<br \/>\u2192<strong> x_<\/strong> dans le cas d\u2019une variable dont on ne connait pas encore le type (ce cas peut se pr\u00e9senter, notamment, lorsque l\u2019on \u00e9crit des fonctions de type \u00ab reader \u00bb qui prennent des attributs en param\u00e8tre qui peuvent \u00eatre de types diff\u00e9rents)<\/p><p>Cependant, dans la mesure o\u00f9 l\u2019\u00e9diteur ne donne pas encore de directives fermes \u00e0 ce sujet, ces pratiques ne sont pas encore uniformis\u00e9es. L\u2019id\u00e9al est de se mettre d\u2019accord sur les conventions adopt\u00e9es en d\u00e9but de projet. Cependant, pour des projets n\u2019ayant pas mis en \u0153uvre ces pratiques d\u00e8s le d\u00e9part, il reste tout de m\u00eame pertinent d\u2019appliquer des conventions de nommage uniformes aux variables des fonctions modifi\u00e9es. Cela permet de tendre petit \u00e0 petit vers la cible en am\u00e9liorant qualit\u00e9 et maintenabilit\u00e9 du code.<\/p><p>Pour ce qui est du reste du nom des variables, il n\u2019y a pas de r\u00e8gle \u00e9tablie. Cependant, comme pour du code \u00ab classique \u00bb, il doit \u00eatre coh\u00e9rent avec le r\u00f4le et le contenu de la variable.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-df11ae8 elementor-widget elementor-widget-heading\" data-id=\"df11ae8\" data-element_type=\"widget\" data-e-type=\"widget\" id=\"title7\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-medium\">Nommage des fonctions<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e82b3da elementor-widget elementor-widget-text-editor\" data-id=\"e82b3da\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>L\u00e0 non plus, il n\u2019existe pas encore de r\u00e8gles fermes impos\u00e9es par l\u2019\u00e9diteur.<\/p><p>Cependant, en analysant le code standard Processes, on s\u2019aper\u00e7oit que l\u2019on retrouve la m\u00eame r\u00e8gle de nommage que pour les objets d\u2019environnement Planisware :<\/p><p><strong>&lt;ID_APPLI_OU_CLIENT&gt;_JS_(&lt;RETURN_TYPE&gt;)_&lt;DESCRIPTION_CMPLMNTAIRE&gt;<\/strong><\/p><p>Ici le type est fix\u00e9 \u00e0 <strong>JS<\/strong> pour JavaScript.<\/p><p>Selon nous, cette convention de nommage permet d\u2019obtenir, d\u2019un simple coup d\u2019\u0153il, les principales caract\u00e9ristiques de la fonction. Cependant, si votre entreprise poss\u00e8de d\u00e9j\u00e0 sa propre convention ou utilise des codes m\u00e9tier sp\u00e9cifiques, il est tout \u00e0 fait possible de les utiliser, la seule contrainte \u00e9tant de respecter l\u2019uniformit\u00e9 du nommage de l\u2019ensemble des fonctions de l\u2019application.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Conventions de nommage des objets Planisware et du code OJS pour un param\u00e9trage r\u00e9ellement maintenable.<\/p>\n","protected":false},"author":9,"featured_media":3250,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"left","neve_meta_author_avatar":"","neve_post_elements_order":"[\"meta\",\"thumbnail\",\"content\",\"tags\",\"comments\"]","neve_meta_disable_header":"off","neve_meta_disable_footer":"","neve_meta_disable_title":"","_themeisle_gutenberg_block_has_review":false,"cybocfi_hide_featured_image":"yes","footnotes":""},"categories":[9],"tags":[56],"class_list":["post-3249","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-non-classifiee","tag-planisware"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.5 (Yoast SEO v28.6) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Planisware : les bonnes pratiques de nommage \u00e0 adopter<\/title>\n<meta name=\"description\" content=\"Adoptez des r\u00e8gles de nommage claires dans Planisware : conventions, pi\u00e8ges \u00e0 \u00e9viter et b\u00e9n\u00e9fices pour vos projets.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/bloomppm.com\/fr\/planisware-focus-sur-les-bonnes-pratiques-de-nommage\/\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/bloomppm.com\\\/fr\\\/planisware-focus-sur-les-bonnes-pratiques-de-nommage\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bloomppm.com\\\/fr\\\/planisware-focus-sur-les-bonnes-pratiques-de-nommage\\\/\"},\"author\":{\"name\":\"Alice Coscia\",\"@id\":\"https:\\\/\\\/bloomppm.com\\\/fr\\\/#\\\/schema\\\/person\\\/70bfd279f3e18f0eecfa256931542f72\"},\"headline\":\"Planisware : focus sur les bonnes pratiques de nommage\",\"datePublished\":\"2022-06-14T10:14:50+00:00\",\"dateModified\":\"2026-08-04T15:16:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/bloomppm.com\\\/fr\\\/planisware-focus-sur-les-bonnes-pratiques-de-nommage\\\/\"},\"wordCount\":1730,\"publisher\":{\"@id\":\"https:\\\/\\\/bloomppm.com\\\/fr\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/bloomppm.com\\\/fr\\\/planisware-focus-sur-les-bonnes-pratiques-de-nommage\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bloomppm.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/Planisware_focus_sur_les_bonnes_pratiques_de_nommage_image_1-e1785745821735.jpg\",\"keywords\":[\"Planisware\"],\"articleSection\":[\"Non classifi\u00e9(e)\"],\"inLanguage\":\"fr-FR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/bloomppm.com\\\/fr\\\/planisware-focus-sur-les-bonnes-pratiques-de-nommage\\\/\",\"url\":\"https:\\\/\\\/bloomppm.com\\\/fr\\\/planisware-focus-sur-les-bonnes-pratiques-de-nommage\\\/\",\"name\":\"Planisware : les bonnes pratiques de nommage \u00e0 adopter\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bloomppm.com\\\/fr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/bloomppm.com\\\/fr\\\/planisware-focus-sur-les-bonnes-pratiques-de-nommage\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/bloomppm.com\\\/fr\\\/planisware-focus-sur-les-bonnes-pratiques-de-nommage\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bloomppm.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/Planisware_focus_sur_les_bonnes_pratiques_de_nommage_image_1-e1785745821735.jpg\",\"datePublished\":\"2022-06-14T10:14:50+00:00\",\"dateModified\":\"2026-08-04T15:16:33+00:00\",\"description\":\"Adoptez des r\u00e8gles de nommage claires dans Planisware : conventions, pi\u00e8ges \u00e0 \u00e9viter et b\u00e9n\u00e9fices pour vos projets.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/bloomppm.com\\\/fr\\\/planisware-focus-sur-les-bonnes-pratiques-de-nommage\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/bloomppm.com\\\/fr\\\/planisware-focus-sur-les-bonnes-pratiques-de-nommage\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/bloomppm.com\\\/fr\\\/planisware-focus-sur-les-bonnes-pratiques-de-nommage\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/bloomppm.com\\\/fr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Planisware : focus sur les bonnes pratiques de nommage\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/bloomppm.com\\\/fr\\\/#website\",\"url\":\"https:\\\/\\\/bloomppm.com\\\/fr\\\/\",\"name\":\"BLOOM PPM\",\"description\":\"We make your projects grow\",\"publisher\":{\"@id\":\"https:\\\/\\\/bloomppm.com\\\/fr\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/bloomppm.com\\\/fr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/bloomppm.com\\\/fr\\\/#organization\",\"name\":\"Bloom PPM\",\"url\":\"https:\\\/\\\/bloomppm.com\\\/fr\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/bloomppm.com\\\/fr\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/bloomppm.com\\\/wp-content\\\/uploads\\\/2020\\\/10\\\/Blue_without_background.png\",\"contentUrl\":\"https:\\\/\\\/bloomppm.com\\\/wp-content\\\/uploads\\\/2020\\\/10\\\/Blue_without_background.png\",\"width\":602,\"height\":204,\"caption\":\"Bloom PPM\"},\"image\":{\"@id\":\"https:\\\/\\\/bloomppm.com\\\/fr\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/company\\\/bloomppm\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/bloomppm.com\\\/fr\\\/#\\\/schema\\\/person\\\/70bfd279f3e18f0eecfa256931542f72\",\"name\":\"Alice Coscia\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/78e17445df21b4802dbcd0ad4f4999611564d6f76fa19ec43b21aed20cb99a21?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/78e17445df21b4802dbcd0ad4f4999611564d6f76fa19ec43b21aed20cb99a21?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/78e17445df21b4802dbcd0ad4f4999611564d6f76fa19ec43b21aed20cb99a21?s=96&d=mm&r=g\",\"caption\":\"Alice Coscia\"},\"url\":\"https:\\\/\\\/bloomppm.com\\\/fr\\\/author\\\/alice-cosciabloomppm-com\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Planisware : les bonnes pratiques de nommage \u00e0 adopter","description":"Adoptez des r\u00e8gles de nommage claires dans Planisware : conventions, pi\u00e8ges \u00e0 \u00e9viter et b\u00e9n\u00e9fices pour vos projets.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/bloomppm.com\/fr\/planisware-focus-sur-les-bonnes-pratiques-de-nommage\/","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/bloomppm.com\/fr\/planisware-focus-sur-les-bonnes-pratiques-de-nommage\/#article","isPartOf":{"@id":"https:\/\/bloomppm.com\/fr\/planisware-focus-sur-les-bonnes-pratiques-de-nommage\/"},"author":{"name":"Alice Coscia","@id":"https:\/\/bloomppm.com\/fr\/#\/schema\/person\/70bfd279f3e18f0eecfa256931542f72"},"headline":"Planisware : focus sur les bonnes pratiques de nommage","datePublished":"2022-06-14T10:14:50+00:00","dateModified":"2026-08-04T15:16:33+00:00","mainEntityOfPage":{"@id":"https:\/\/bloomppm.com\/fr\/planisware-focus-sur-les-bonnes-pratiques-de-nommage\/"},"wordCount":1730,"publisher":{"@id":"https:\/\/bloomppm.com\/fr\/#organization"},"image":{"@id":"https:\/\/bloomppm.com\/fr\/planisware-focus-sur-les-bonnes-pratiques-de-nommage\/#primaryimage"},"thumbnailUrl":"https:\/\/bloomppm.com\/wp-content\/uploads\/2022\/06\/Planisware_focus_sur_les_bonnes_pratiques_de_nommage_image_1-e1785745821735.jpg","keywords":["Planisware"],"articleSection":["Non classifi\u00e9(e)"],"inLanguage":"fr-FR"},{"@type":"WebPage","@id":"https:\/\/bloomppm.com\/fr\/planisware-focus-sur-les-bonnes-pratiques-de-nommage\/","url":"https:\/\/bloomppm.com\/fr\/planisware-focus-sur-les-bonnes-pratiques-de-nommage\/","name":"Planisware : les bonnes pratiques de nommage \u00e0 adopter","isPartOf":{"@id":"https:\/\/bloomppm.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/bloomppm.com\/fr\/planisware-focus-sur-les-bonnes-pratiques-de-nommage\/#primaryimage"},"image":{"@id":"https:\/\/bloomppm.com\/fr\/planisware-focus-sur-les-bonnes-pratiques-de-nommage\/#primaryimage"},"thumbnailUrl":"https:\/\/bloomppm.com\/wp-content\/uploads\/2022\/06\/Planisware_focus_sur_les_bonnes_pratiques_de_nommage_image_1-e1785745821735.jpg","datePublished":"2022-06-14T10:14:50+00:00","dateModified":"2026-08-04T15:16:33+00:00","description":"Adoptez des r\u00e8gles de nommage claires dans Planisware : conventions, pi\u00e8ges \u00e0 \u00e9viter et b\u00e9n\u00e9fices pour vos projets.","breadcrumb":{"@id":"https:\/\/bloomppm.com\/fr\/planisware-focus-sur-les-bonnes-pratiques-de-nommage\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/bloomppm.com\/fr\/planisware-focus-sur-les-bonnes-pratiques-de-nommage\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/bloomppm.com\/fr\/planisware-focus-sur-les-bonnes-pratiques-de-nommage\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/bloomppm.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Planisware : focus sur les bonnes pratiques de nommage"}]},{"@type":"WebSite","@id":"https:\/\/bloomppm.com\/fr\/#website","url":"https:\/\/bloomppm.com\/fr\/","name":"BLOOM PPM","description":"We make your projects grow","publisher":{"@id":"https:\/\/bloomppm.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/bloomppm.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/bloomppm.com\/fr\/#organization","name":"Bloom PPM","url":"https:\/\/bloomppm.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/bloomppm.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/bloomppm.com\/wp-content\/uploads\/2020\/10\/Blue_without_background.png","contentUrl":"https:\/\/bloomppm.com\/wp-content\/uploads\/2020\/10\/Blue_without_background.png","width":602,"height":204,"caption":"Bloom PPM"},"image":{"@id":"https:\/\/bloomppm.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/company\/bloomppm\/"]},{"@type":"Person","@id":"https:\/\/bloomppm.com\/fr\/#\/schema\/person\/70bfd279f3e18f0eecfa256931542f72","name":"Alice Coscia","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/secure.gravatar.com\/avatar\/78e17445df21b4802dbcd0ad4f4999611564d6f76fa19ec43b21aed20cb99a21?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/78e17445df21b4802dbcd0ad4f4999611564d6f76fa19ec43b21aed20cb99a21?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/78e17445df21b4802dbcd0ad4f4999611564d6f76fa19ec43b21aed20cb99a21?s=96&d=mm&r=g","caption":"Alice Coscia"},"url":"https:\/\/bloomppm.com\/fr\/author\/alice-cosciabloomppm-com\/"}]}},"_links":{"self":[{"href":"https:\/\/bloomppm.com\/fr\/wp-json\/wp\/v2\/posts\/3249","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bloomppm.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bloomppm.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bloomppm.com\/fr\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/bloomppm.com\/fr\/wp-json\/wp\/v2\/comments?post=3249"}],"version-history":[{"count":12,"href":"https:\/\/bloomppm.com\/fr\/wp-json\/wp\/v2\/posts\/3249\/revisions"}],"predecessor-version":[{"id":5414,"href":"https:\/\/bloomppm.com\/fr\/wp-json\/wp\/v2\/posts\/3249\/revisions\/5414"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bloomppm.com\/fr\/wp-json\/wp\/v2\/media\/3250"}],"wp:attachment":[{"href":"https:\/\/bloomppm.com\/fr\/wp-json\/wp\/v2\/media?parent=3249"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bloomppm.com\/fr\/wp-json\/wp\/v2\/categories?post=3249"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bloomppm.com\/fr\/wp-json\/wp\/v2\/tags?post=3249"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}