<!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:&quot;Calibri&quot;,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:&quot;Calibri&quot;,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:&quot;Calibri&quot;,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:&quot;Calibri&quot;,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>