<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<div class="moz-cite-prefix">Le 18/03/2024 à 08:32, Dami Laurent
(PJ) a écrit :<br>
</div>
<blockquote type="cite"
cite="mid:8740e7faff754747863a03961bb7bb29@justice.ge.ch">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="Generator"
content="Microsoft Word 15 (filtered medium)">
<style>@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}pre
        {mso-style-priority:99;
        mso-style-link:"Préformaté HTML Car";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}span.PrformatHTMLCar
        {mso-style-name:"Préformaté HTML Car";
        mso-style-priority:99;
        mso-style-link:"Préformaté HTML";
        font-family:"Consolas",serif;}span.EmailStyle22
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}div.WordSection1
        {page:WordSection1;}</style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
<div class="WordSection1">
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">En
examinant le code de ProductOpener afin de me préparer au
hackaton, je constate que l'architecture actuelle n'est pas
du tout orientée-objet : chaque module expose une collection
de routines et importe de large pans des routines d'autres
modules; l'état de l'app est dans des variables globales ou
dans les hashmaps passés entre modules. L'introduction d'une
architecture OO à travers Corinna (ou Moose, ou des Plain
Old Perl Objects) serait très certainement bénéfique, mais
ça demande un travail de conception sur l'organisation OO
souhaitée (classes, méthodes, héritage, etc). Sujet
passionnant mais ambitieux pour un week-end !<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">Si
Corinna sert uniquement à "sécuriser les hashmaps", c'est à
mon avis un peu overkill; un mécanisme comme
Hash::Util::lock_keys permettrait déjà de réduire les
risques d'erreurs sans forcer une montée en version de Perl.</span></p>
</div>
</blockquote>
<p>Désolé je n'ai vu ce mail que maintenant (car il était dans les
spams… je pense qu'on a un problème de réglage DKIM sur cette
liste).</p>
<p>En effet lock_keys est certainement une très bonne solution si on
couple ça à une bonne documentation de chaque clé ! ( j'imagine
bien un lock_keys(%hash, keys %keys_descriptions); )<br>
</p>
<p>Je reporte ça dans le cryptpad
<a class="moz-txt-link-freetext" href="https://cryptpad.fr/pad/#/2/pad/edit/cwBDABLR-P1sTbbnVVtIXY8Z/">https://cryptpad.fr/pad/#/2/pad/edit/cwBDABLR-P1sTbbnVVtIXY8Z/</a></p>
<p>Et pour préparer un passage objet on pourrait en effet commencer
par continuer le découpage des modules en unités qui correspondent
plus à des périmètres objets.<br>
</p>
<p>À très bientôt ;-)</p>
<pre class="moz-signature" cols="72">
</pre>
<div id="grammalecte_menu_main_button_shadow_host"
style="width: 0px; height: 0px;"></div>
</body>
</html>