Journal Écrire du code Perl maintenable.

Posté par .
Tags : aucun
16
27
juil.
2010
Si si, c'est possible.


Certes, la légende[1] veut qu'un code Perl, c'est illisible parce que c'est écrit en Perl. Contrairement à Python qui permet toujours de faire du code propre.

Or il est tout à fait possible de faire du code propre en Perl et du code dégueulasse en Python (même si c'est plus facile de faire du code sale en Perl qu'en Python, il faut avouer).

Mais en fin de compte, le langage est ce qu'on en fait. On ne peux pas espérer que le langage supplée à nos faiblesses.

Faire une page en php hébergée chez un fai, c'est à la portée du premier venu. Faire du code propre, performant, élégant, maintenable, etc., c'est un métier et c'est une pratique qui se perfectionne tout au long de sa vie.

J'en viens au sujet de ce journal. Comment faire du code maintenable en Perl ?

Chromium, l'auteur de Modern Perl: The Book[2] a publié une liste de conseils et de ressources nécessaires (oseré-je dire indispensable) pour toute personne dont l'objectif est de faire du code maintenable en Perl.

En vrac, on y retrouve perltidy et perl::ciritic (que je mentionnais dans le journal sus-cité), des conseils classiques (utiliser strict, warnings, CPAN, des benchmarks, documenter, etc.), écrire du code sécure, utiliser une version récente de Perl etc.

En espérant que ça soit utile à quelqu'un. N'hésitez pas à diffuser cette liste (ou le nom du livre) autour de vous.

[1] Encore une fois évoquée récemment (normal, c'était un trolldi) :http://linuxfr.org/comments/1146943.html#1146943
[2] Le brouillon du livre vient de sortir. N'hésitez pas à lui faire part de vos retours, je suis sûr qu'il en sera très content. (cf les sections 2 et 3 du README). Voir aussi
  • # Osé-je ?

    Posté par . Évalué à -1.


    ...
    (oseré-je dire indispensable)
    ...
    En vrac, on y retrouve perltidy et perl::ciritic (que je mentionnais dans le journal sus-cité),
    • [^] # Re: Osé-je ?

      Posté par (page perso) . Évalué à 1.

      Je pense qu'il voulait plutôt dire oserais-je.
      • [^] # Re: Osé-je ?

        Posté par (page perso) . Évalué à -1.

        Ou simplement «Oseré-je», si ça se trouve.
        • [^] # Re: Osé-je ?

          Posté par . Évalué à -1.

          Oserai-je alors
          • [^] # Re: Osé-je ?

            Posté par (page perso) . Évalué à 0.

            Passé simple du verbe oserer ?
            • [^] # Re: Osé-je ?

              Posté par . Évalué à 4.

              Non futur de l'indicatif du verbe oser, mode interrogatif.
              Le passé simple ca correspondrait plutôt à "Osai-je?"
              http://www.aidenet.eu/vparleje.htm
              • [^] # Re: Osé-je ?

                Posté par (page perso) . Évalué à 2.

                Pour le verbe oserer c'est "oserai-je". Et la forme interrogative est "oseré-je ?". Je me disais bien que tu confondais avec le verbe oser.
            • [^] # Re: Osé-je ?

              Posté par . Évalué à 5.

              Mais bon, je suis indulgent. J'arrive facilement à comprendre que des amateurs de Perl se mélangent les pinceaux avec la conjugaison française, ils consacrent déjà toute leur énergie à trouver la syntaxe correcte du moindre truc qu'ils veulent exprimer dans leur langage favori.
              Faudra juste ajouter le Bled à leur bibliothèque. :O)
              • [^] # Re: Osé-je ?

                Posté par . Évalué à 2.

                Toi t'as rien compris ....
                ls consacrent déjà toute leur énergie à trouver la syntaxe correcte du moindre truc qu'ils veulent exprimer dans leur langage favori.
                La syntaxe et la grammaire Perl sont très facile : il y a plusieurs façons de faire : tu trouves toujours une syntaxe qui est logique et compréhensible pour toi (mais pas forcément pour les autres). Et plus tu perles, et plus ça devient facile. C'est le retour au Francais avec ses règles rigides et ses exceptions qui est difficile (ya pas de variables implicites en francais).
            • [^] # Re: Osé-je ?

              Posté par . Évalué à 4.

              Comme je prend la relève en ces temps de farniente, j'oubliais.

              Non seulement un bon journal sans troll orthographique, ça ne se fait pas sur DLFP, mais la coutume exige aussi un petit aparté sur la licence.

              Ce bouquin est sous une licence non libre.
              Même s'il semble que la volonté de l'ouvrir un peu plus y soit. (les promesses ...)
              C'est dommage pour ceux qui voudraient entamer la traduction de cet ouvrage de référence: ils devront demander la permission à son auteur.


              For now, this draft work is licensed under a Creative Commons
              Attribution-Noncommercial-No Derivative Works 3.0 United States License. For
              more details, see:

              http://creativecommons.org/licenses/by-nc-nd/3.0/us/

              Please feel free to point people to this repository. Suggestions and
              contributions are welcome. Please do not redistribute with modifications
              (forking with Git is fine, but I request that you send me patches or pull
              requests).

              This book will be available under a less restrictive license when it comes out
              in print from Onyx Neon Press:

              http://www.onyxneon.com/


              On a fait le tour.
              Vous pouvez à présent zapper ce thread.
              • [^] # Re: Osé-je ?

                Posté par (page perso) . Évalué à 3.

                Vous pouvez à présent zapper ce thread.

                euh bin, non, faut lire le journal jusqu'au bout... et justement c'est là que ça coince :

                [..] Voir aussi

                et là, suspens insoutenable, le clavier semble s'être blo
              • [^] # Re: Osé-je ?

                Posté par (page perso) . Évalué à 2.

                >> C'est dommage pour ceux qui voudraient entamer la traduction de cet ouvrage de référence: ils devront demander la permission à son auteur.

                Demander l'autorisation ?! Trop dur !

                Rien ne t'empêche d'entamer la traduction si tu la gardes pour toi et toi seul.
                Ensuite, tu peux demander à l'auteur le droit ou non de la diffuser.
      • [^] # Eh si, c’est correct !

        Posté par . Évalué à 3.

        Je pense qu'il voulait plutôt dire oserais-je.

        Pas forcément : « osé-je ? » (prononcé généralement et éventuellement écrit « osè-je ? ») est tout-à-fait correct, bien que peu usité (surtout à l’oral).
        Bon après, on se pose généralement moins de questions sur son propre présent que sur celui des autres (et les verbes avec lesquels c’est le plus courant ne sont pas du premier groupe : « ai-je ? », « suis-je ? », « puis-je ? »…).

        Voir :
        http://www.leconjugueur.com/frformeinterrogative.php
        http://forum.wordreference.com/showthread.php?t=380886
        http://fr.wiktionary.org/wiki/Utilisateur:B%C3%A9otien_lambd(...)

        Théorie du pot-au-feu : « Tout milieu où existe une notion de hauteur (notamment les milieux économique, politique, professionnels) se comporte comme un pot-au-feu : les mauvaises graisses remontent. »

  • # L'auteur n'est pas plutot "chromatic"

    Posté par . Évalué à 5.

    Sur github et sur modernperlbooks.com c'est ce qui est indiqué. (parce que s'appeler chromium en ce moment c'est pas forcément flatteur)
  • # Je dirais même plus

    Posté par . Évalué à 4.

    Hello,

    Tout à fait d'accord avec toi, Perl, c'est la tronçonneuse suisse, son maniement par des personnes peu heu... formées, voilà, peut conduire à des catastrophes.

    Dans le même rayon que le livre dont tu parles, il y a le très bon (à mon goût) "De l'art de programmer en Perl", par Damian Conway, éditions O'Reilly, qui, comme son nom l'indique, est disponible en français. Depuis que je l'ai lu, mon code est beau, maintenable, mes cheveux repoussent et j'ai gagné au loto.

    Il couvre globalement les mêmes sujets que Modern Perl: The book, mais pour suivre l'adage Perl qui dit que "There's more than one way to do it", on pourra désormais dire aussi "There's more than one way to read it".
    • [^] # Re: Je dirais même plus

      Posté par . Évalué à 3.

      Dans le même rayon que le livre dont tu parles, il y a le très bon (à mon goût) "De l'art de programmer en Perl"

      Après l'avoir lu, on écrit plus proprement en Perl mais aussi dans les autres langages. C'est un livre à posséder !


      ps : Sauf le français dans mon cas...
    • [^] # Re: Je dirais même plus

      Posté par . Évalué à 4.

      Dans le même rayon que le livre dont tu parles, il y a le très bon (à mon goût) "De l'art de programmer en Perl", par Damian Conway
      Effectivement.


      D'ailleurs Perl-Critic est en grande partie basée sur ce livre :
      Most Policy modules are based on Damian Conway's book Perl Best Practices.
      [...]
      The Policy modules distributed with Perl::Critic have been grouped into categories according to the table of contents in Damian Conway's book Perl Best Practices.
      [...]
      Damian Conway's own Perl::Critic configuration is also included in this distribution as examples/perlcriticrc-conway.
      ( http://search.cpan.org/~elliotjs/Perl-Critic-1.108/lib/Perl/(...) )



      Et plus que le "There's more than one way to read it" dont tu parles (et qui ne m'évoque pas grand chose), je préfère le Some Ways Are Better Than Others qui pourrait être la suite de There Is More Than One Way To Do It
    • [^] # Re: Je dirais même plus

      Posté par . Évalué à 2.

      son maniement par des personnes peu heu... formées, voilà, peut conduire à des catastrophes

      toujours eu l'impression que c'était l'inverse, plus tu es formé en perl, plus tes codes sont degueulasses
  • # du code degeu en python...

    Posté par (page perso) . Évalué à 2.

    c'est pas super dur de faire du code degeu en python, suffit d'appliquer les recettes classiques ( des fonctions de milliers de lignes, des variables pas clairs, du copier coller, mélanger les structures ), ou de passer sur les trucs un peu spécifique au language ( grandement inspiré de Java à ce niveau ) :
    - try/except sur tout. Une riche idée ça, un try/except générique avec un message. Sauf que si tu as une erreur de syntaxe, tu l'as dans l'os pour piger d'ou il vient, en fonction de la clause except
    - des imports *, ou une hierarchie à rallonge, ça peut rendre les choses amusantes

    Des tas de méthodes sont dispo sur http://freeworld.thc.org/root/phun/unmaintain.html
    • [^] # Re: du code degeu en python...

      Posté par (page perso) . Évalué à 2.

      En Python les erreurs de syntaxe sont générées lors de l'ouverture du fichier, et ne sont pas donc pas prise en compte par le bloc try/except (heureusement !).

      Sinon, pour les autres exceptions, ça reste vrai... mais qui fait encore des try/except sans préciser les exceptions à catcher ?
      • [^] # Re: du code degeu en python...

        Posté par (page perso) . Évalué à 3.

        C'est ce qu'on enseigne aux pieds des gorets roumains, comme on enseigne aux développeurs indiens à pondre 10 lignes de codes au lieu d'une quand il faut faire une requête SQL.

        Commentaire sous licence LPRAB - http://sam.zoy.org/lprab/

    • [^] # Re: du code degeu en python...

      Posté par . Évalué à 3.

      redéfinir les fonctions __ par défaut, ça peut peut être bien rock'n'roll aussi
      genre modifier les data dans un __str__ =)
      • [^] # Re: du code degeu en python...

        Posté par (page perso) . Évalué à 2.

        Par contre, j'ai toujours été très déçu par le fait qu'on ne puisse pas redéfinir les __add__ et autres méthodes du même genre dans la classe int de base...

        ...on peut toujours hériter de la classe int (en nommant la classe fille int ;-) ), mais ça ne change pas le comportement des constantes entière. Dommage.
  • # Justification

    Posté par . Évalué à 0.

    J'avais juste écris ça pour faire sortir les mongueurs :p je connais juste perl de réputation.

    Mais en tout cas tu m'as donné envie de regarder perl de plus près.
  • # Écrire du code Perl maintenable.

    Posté par (page perso) . Évalué à 10.

    Y en a qui ont essayé, ils ont eu des problèmes.
    • [^] # Re: Écrire du code Perl maintenable.

      Posté par . Évalué à 4.

      les autres aussi.
    • [^] # Re: Écrire du code Perl maintenable.

      Posté par . Évalué à 3.

      C'est vrai qu'écrire un truc du genre

      bool f(unsigned n) { return (n>0 && 0 == (n & (n-1))); } [1]

      c'est tellement plus clair (et là je fais exprès de prendre une fonction dont l'écriture cryptique peut se justifier...).

      [1] Ou bien, pour les javaïstes:


      public class IsPow2 {
      public static boolean isPowTwo(int n) { return (n>0 && 0 == (n&(n-1))); }
      }

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.