<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog de dsr57 - Windev &#187; procédures</title>
	<atom:link href="https://blog.developpez.com/dsr57/ptag/procedures/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/dsr57</link>
	<description>Blog sur l&#039;edi windev</description>
	<lastBuildDate>Thu, 04 Jun 2015 11:46:25 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>WinDev : Normes de programmation V2</title>
		<link>https://blog.developpez.com/dsr57/p12818/windev/windev-normes-de-programmation-v2</link>
		<comments>https://blog.developpez.com/dsr57/p12818/windev/windev-normes-de-programmation-v2#comments</comments>
		<pubDate>Tue, 30 Dec 2014 21:44:03 +0000</pubDate>
		<dc:creator><![CDATA[dsr57]]></dc:creator>
				<category><![CDATA[Windev]]></category>
		<category><![CDATA[action]]></category>
		<category><![CDATA[méthodes]]></category>
		<category><![CDATA[normes de programmation]]></category>
		<category><![CDATA[procédures]]></category>

		<guid isPermaLink="false">http://blog.developpez.com/dsr57/?p=325</guid>
		<description><![CDATA[Introduction Dans une suite de billets j&#8217;avais présenté une norme de nommage des différents éléments WinDev que je préconise et met en place lors de mes différentes programmations. Avec ce billet, je propose une amélioration sur le nom des procédures visant à améliorer la compréhension des traitements effectués par la celles-ci en lisant leur nom, pour cela j&#8217;ai mis en place un nouvelle partie dans le nom visant à isoler l&#8217;action de la procédure.Dans un [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><strong>Introduction </strong></p>
<p>Dans une suite de billets j&rsquo;avais présenté une norme de nommage des différents éléments WinDev que je préconise et met en place lors de mes différentes programmations. Avec ce billet, je propose une amélioration sur le nom des procédures visant à améliorer la compréhension des traitements effectués par la celles-ci en lisant leur nom, pour cela j&rsquo;ai mis en place un nouvelle partie dans le nom visant à isoler l&rsquo;action de la procédure.Dans un premier temps nous allons voir la mise en place de cette amélioration pour les procédures globales, ensuite les procédures locales et pour terminer les procédures (généralement appelées méthodes) de classe. </p>
<p></p>
<ul>
Liste des billets sur les normes de programmation en WinDev :</p>
<li><a href="http://blog.developpez.com/dsr57/p12149/windev/windev-normes-de-programmation-pour-les-types-simples" title="Windev : Normes de programmation pour les variables de type simple" target="_blank">WinDev : normes de programmation pour les variables de type simple</a></li>
<li><a href="http://blog.developpez.com/dsr57/p12170/windev/windev-norme-de-programmation-pour-les-procedures-et-les-champs-graphiques" title="Windev : Norme de programmation pour les procédures et les champs graphiques" target="_blank">Windev : normes de programmation pour les procédures et les champs graphiques</a></li>
<li><a href="http://blog.developpez.com/dsr57/p12189/windev/windev-normes-de-programmation-pour-la-poo" title="Windev : normes de programmation pour la POO" target="_blank">WinDev : normes de programmation pour la POO</a></li>
</ul>
<p><strong>Global au projet (Collections de procédures)</strong></p>
<ul>
Les procédures déclarées dans une collection de procédures ont une portée globale au projet. Le nom sera composé de 3 parties : </p>
<li>préfixe : obligatoire et fixe «GProc ». « G » pour globale au projet, « Proc » pour procédure ;</li>
<li>action : obligatoire, cette partie permet en un mot de définir le type d’action de la procédure. Cf. liste des actions ci-dessous.
</li>
<li>nom : obligatoire, il doit être explicite pour permettre à la lecture de comprendre le traitement de la procédure. Par convention le nom est écrit en minuscule, sans accent, sans caractère spéciaux (€,$,%, …), et commence par une minuscule. Si le nom de l’élément est composé de plusieurs mots, la première lettre du mot est en majuscule. </li>
</ul>
<p>Les trois parties seront séparées par le caractère « _ ».</p>
<p><u>Exemple : </u></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">GProc_Ini_VarGbl : Procédure qui initialise les variables globales au projet.</div></div>
<ul>
<u>Liste des actions :</u> </p>
<li>Afc : Affichage ;</li>
<li>Ajt : Ajout ;</li>
<li>Clc : Clic sur un bouton ;</li>
<li>Ent : Entrée dans un champ ;</li>
<li>Ini : Initialisation ;</li>
<li>Lst: Récupération d’une liste de valeur ou une liste d’objet ;</li>
<li>Raz : remise à zéro ;</li>
<li>Rch : Recherche ;</li>
<li>Rcp : Récupération d’une valeur ou d’un objet ;</li>
<li>Sel : Sélection (ligne de table, combo) ;</li>
<li>Sor : Sortie d’un champ ;</li>
<li>Spr : Supprime/suppression ; </li>
<li>Vrf : Vérification.</li>
</ul>
<p>Cette liste est non exhaustive, elle doit être complétée/améliorée/modifiée selon les besoins de chacun. J&rsquo;ai volontairement oublié l&rsquo;action EXE, pour éviter une utilisation massive et/ou abusive, l&rsquo;utilisation de cette action est réservée pour l&rsquo;exécution requêtes SQL, Script, &#8230;</p>
<p><strong>Local à un élément du projet</strong></p>
<ul>
Les procédures déclarées dans un élément local du projet ont un portée local, elles ne sont pas accessibles depuis un élément extérieur. Le nom sera composé en 3 parties :</p>
<li>Préfixe : Obligatoire et fixe «lProc ».</li>
<li>Action : Obligatoire, cette partie permet en un mot de définir le type d’action de la procédure. Cf. liste des actions dans le paragraphe « Global au projet (Collections de procédures) ». </li>
<li>Nom : Obligatoire, il doit être explicite pour permettre à la lecture de comprendre le traitement de la procédure. Par convention le nom est écrit en minuscule, sans accent, sans caractère spéciaux (€,$,%, …), et commence par une minuscule. Si le nom de l’élément est composé de plusieurs mots, la première lettre du mot est en majuscule. </li>
</ul>
<p>Les trois parties seront séparées par le caractère «_ ».</p>
<p><u>Exemple :</u></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">lProc_Sel_typeMediaCbx : Procédure qui gère la sélection d’une ligne dans la liste Type de média. <br />
LProc_Ini_typeMediaCbx : Procédure qui gère l’initialisation de la combo type de média.</div></div>
<p></p>
<p><strong>Classes</strong></p>
<ul>
Les procédures de classes sont soit public, protégée, ou privée, dans la convention de nommage, cette notion n’est pas prise en compte, car lors de la programmation en objet, WinDev fait la complétion automatique en proposant uniquement les procédures avec une portée accessible. Le nom est composé de deux parties : </p>
<li>Action : Obligatoire, cette partie permet en un mot de définir le type d’action de la procédure. Cf. liste des actions dans le paragraphe « Global au projet (Collections de procédures) ». Une exception est appliquée pour les procédures des gestions des requêtes, la partie action commence par « Exe »
</li>
<li>Nom : Obligatoire, il doit être explicite pour permettre à la lecture de comprendre le traitement de la procédure. Par convention le nom est écrit en minuscule, sans accent, sans caractère spéciaux (€,$,%, …), et commence par une minuscule. Si le nom de l’élément est composé de plusieurs mots, la première lettre du mot est en minuscule.
</li>
</ul>
<p><u>Exemple :</u></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">lst_societe : récupère la liste des sociétés<br />
&nbsp; &nbsp; &nbsp; &nbsp; lst_clientDebiteur : récupère la liste des clients qui ont un compte débiteur</div></div>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windev : Norme de programmation pour les procédures et les champs graphiques</title>
		<link>https://blog.developpez.com/dsr57/p12170/windev/windev-norme-de-programmation-pour-les-procedures-et-les-champs-graphiques</link>
		<comments>https://blog.developpez.com/dsr57/p12170/windev/windev-norme-de-programmation-pour-les-procedures-et-les-champs-graphiques#comments</comments>
		<pubDate>Thu, 08 Aug 2013 20:26:56 +0000</pubDate>
		<dc:creator><![CDATA[dsr57]]></dc:creator>
				<category><![CDATA[Windev]]></category>
		<category><![CDATA[champs; graphiques]]></category>
		<category><![CDATA[convention nommage]]></category>
		<category><![CDATA[normes;normes de programmation]]></category>
		<category><![CDATA[procédures]]></category>

		<guid isPermaLink="false">http://blog.developpez.com/dsr57/?p=56</guid>
		<description><![CDATA[Après un premier billet sur les normes de programmation pour les variables de type simple, je vais continuer dans le même registre en évoquant dans un premier temps les normes pour les procédures et ensuite les champs graphiques. Les procédures (Et les fonctions ?) Après maintes hésitations et des recherches sur le web, non pas pour connaître la différence entre une fonction et une procédure, mais la source et l&#8217;utilisation dans différents langages de ces [&#8230;]]]></description>
				<content:encoded><![CDATA[<div align="justified" style="text-indent: 1em">
Après un premier billet sur <a href="http://blog.developpez.com/dsr57/p12149/windev/windev-normes-de-programmation-pour-les-types-simples" target="_blank">les normes de programmation pour les variables de type simple</a>, je vais continuer dans le même registre en évoquant dans un premier temps les normes pour les procédures et ensuite les champs graphiques.
</div>
<p><strong>Les procédures (Et les fonctions ?)</strong></p>
<div align="justified" style="text-indent: 1em">
Après maintes hésitations et des recherches sur le web, non pas pour connaître la différence entre une fonction et une procédure, mais la source et l&rsquo;utilisation dans différents langages de ces 2 notions. Ces recherches ont résulté sur le faite que cette notion était indépendante de la conception algorithmique et dépendait du langage de programmation. Après une telle conclusion, je ne vais pas différencier le nom des fonctions et des procédures, tout sera procédure avec ou non une valeur de retour. Toujours en conservant le même principe de nommage
</div>
<ol>
<u>La portée :</u> Première lettre (G : Globale, l : locale).<br />
<u>le type :</u> &laquo;&nbsp;Proc&nbsp;&raquo; comme procédure suivi de &laquo;&nbsp;_&nbsp;&raquo;.<br />
<u>Le nom :</u> Tout ce qui est après le symbole « _ ». Pour cette partie, utiliser un nom explicite. le nom commence par une minuscule et chaque changement de mot commence par une majuscule.</ol>
<p><u>Exemple  :</u></p>
<ol>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Gproc_calculDateFinContrat : Procédure globale qui calcule la date de fin de contrat.<br />
lproc_calculMontantFacture : Procédure locale qui calcule le montant d'une facture.<br />
lproc_EstSolder : Fonction qui renvoie vrai ou faux selon si la facture est soldée.</div></div>
</ol>
<p><strong>Les champs graphiques</strong></p>
<div align="justified" style="text-indent: 1em">
Ce paragraphe sera composé en première partie d&rsquo;une liste des champs graphiques utilisés principalement dans les interfaces graphique, pour ensuite évoquer brièvement les groupes de champs et pour terminer je vais raconter une petite histoire qui m&rsquo;a poussé à aller plus loin dans la convention pour les champs&#8230;
</div>
<p></p>
<ul>
<div align="justified" style="text-indent: 1em">
<li>Pour la norme sur les noms des champs le principe varie un peu, un champ graphique est forcément local, il n&rsquo;y a aucun intérêt à ajouter la portée au nom. Le nom sera composé de :
</div>
<p></p>
<ol>
<u>type :</u> cf liste suivi de &laquo;&nbsp;_&nbsp;&raquo;.<br />
<u>nom :</u> Tout ce qui est après le symbole « _ ». Pour cette partie, utiliser un nom explicite. le nom commence par une minuscule et chaque changement de mot commence par une majuscule.</ol>
<p><u>Listes des champs : </u></p>
<ol>
<u>Fenêtre :</u> Fen &#8211;&gt; Fen_nomDelaFenêtre<br />
<u>Fenêtre interne :</u> FenI &#8211;&gt; FenI_nomDelaFenêtre<br />
<u>Fenêtre modèle :</u> FenM &#8211;&gt; FenM_nomDelaFenêtre<br />
<u>Etat :</u> Etat &#8211;&gt; Etat_nomDeLEtat<br />
<u>Etat interne :</u> EtatI &#8211;&gt; EtatI_nomDeLEtat<br />
<u>Champ de saisie :</u>Txt &#8211;&gt; Txt_nomChamp<br />
<u>Bouton :</u> Btn &#8211;&gt; Btn_nomChamp<br />
<u>Image :</u> Img &#8211;&gt; Img_nomChamp<br />
<u>Sélecteur :</u> Opt &#8211;&gt; Opt_nomChamp<br />
<u>Interruptur :</u> Chk &#8211;&gt; Chk_nomChamp<br />
<u>Combo, liste :</u> Cbx &#8211;&gt; Cbx_nomChamp<br />
<u>Table :</u> TAB &#8211;&gt; TAB_nomChamp<br />
<u>Jauge :</u> Jau &#8211;&gt; Jau_nomChamp</ol>
</li>
<li>
<div align="justified" style="text-indent: 1em">
Windev permet de rassembler les champs en groupe, cela permet de consulter, modifier les caractéristiques des champs composant le groupe. Même principe que les champs graphiques, le groupe est local, on n&rsquo;aura donc pas de notion de portée, le nom sera composé de
</div>
<ol>
<u>Type :</u> &lsquo;grp&rsquo; suivi de &laquo;&nbsp;_&nbsp;&raquo;.<br />
<u>Nom :</u> Tout ce qui est après le symbole « _ ». Pour cette partie, utiliser un nom explicite. le nom commence par une minuscule et chaque changement de mot commence par une majuscule.</ol>
<p><u>Exemple : </u></p>
<ol>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">grp_boutons..visible=vrai</div></div>
</ol>
<p>Pour plus de renseignements sur les groupes voir la documentation sur le site de pc-soft : <a href="http://doc.pcsoft.fr/fr-fr/?1010016" title="Documentation 'Groupe de champs'" target="_blank">Documentation en ligne PC-Soft</a>
</li>
<li>
<div align="justified" style="text-indent: 1em">
Je vais maintenant évoquer un cas qui m&rsquo;a demandé d&rsquo;aller plus loin dans le nommage des champs. Dans ma carrière de développeur d&rsquo;applications, j&rsquo;ai créé énormément de fenêtres, dans lesquelles sont affichés différents champs. Je vais faire simple, j&rsquo;ai dû programmer une fenêtre d&rsquo;exportation selon un nombre de critères importants (Civilité, Secteur géographique, Profession, etc..)
</div>
<ul>
Chaque critère est composé de 3 champs : </p>
<li>Une zone texte &laquo;&nbsp;Code&nbsp;&raquo; : Saisir le code.</li>
<li>Une zone texte &laquo;&nbsp;Libellé&nbsp;&raquo; : Affiche le libelle du code</li>
<li>Un bouton &laquo;&nbsp;Recherche&nbsp;&raquo; : Affiche dans un tableau l&rsquo;ensemble des possibilités du critère</li>
<p>.</ul>
<ul>
Au départ j&rsquo;avais nommé mes champs </p>
<li>Code : txt_codeCritere</li>
<li>Libelle : Txt_LibelleCritere</li>
<li>Bouton recherche : Btn_RechCritere</li>
</ul>
<p>J&rsquo;ai rencontré un petit souci quand j&rsquo;ai commencé à coder la requête SQL. Je testais si le code du critère était renseigné, si oui je rajoutais une clause de sélection. </p>
<p><u>Exemple de code : </u></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Si txt_CodeSecteur&quot;&quot; alors<br />
&nbsp; &nbsp; &nbsp;ls_requete+=&quot; AND cli_secteur='&quot;+txt_codesecteur+&quot;'&quot;<br />
fin</div></div>
<p></p>
<div align="justified" style="text-indent: 1em">
Jusque là, vous ne voyez peut être pas de souçi, mon problème intervient avec la quantité de code. Quand on commence à taper le nom d&rsquo;une variable, d&rsquo;un champ ou autres objets Windev propose automatiquement une liste des champs qui commence par ce que l&rsquo;on vient de saisir. Alors en commençant à saisir &laquo;&nbsp;Txt_code&nbsp;&raquo;, je me retrouvais avec l&rsquo;ensemble des critères de sélection, et donc une liste importante à parcourir. Alors qu&rsquo;en inversant le nom du critère et le type d&rsquo;information, on obtient :
</div>
<p></p>
<ul>
<li>Code : txt_Criterecode</li>
<li>Libelle : Txt_CritereLibelle</li>
<li>Bouton recherche : Btn_CritereRech</li>
</ul>
<div align="justified" style="text-indent: 1em">
Maintenant si je saisis &laquo;&nbsp;Txt_secteur&nbsp;&raquo;, la liste affiche uniquement les champs Txt_secteurCode et Txt_secteurLibelle. La liste est diminuée, et donc plus confortable pour sélectionner le bon champs. je trouve que cette convention de nommage va plus loin dans l&rsquo;organisation des champs et donne plus de souplesse lors de la codification.
</div>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
