IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

La taverne du Club : Humour et divers Discussion :

How to Write Unmaintainable Code

  1. #1
    Membre actif Avatar de wace
    Inscrit en
    Septembre 2003
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 224
    Points : 263
    Points
    263
    Par défaut How to Write Unmaintainable Code


    How To Write Unmaintainable Code


    Je ne savais pas où le mettre mais ca vaux vraiement le détour,

    Désolé pour les non anglophones, mais je n'ai pas trouvé de version dans la langue de Moliére, si quelqu'un veux nous en faire une traduction ... je pense qu'il sera le bien venu
    Les hommes naissent et demeurent libres et égaux en droits; les distinctions sociales ne peuvent être fondées que sur l'utilité commune
    [article 1er Declaration Universelle des Droits de l'Homme]
    www.baseball-grizzlys.com

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Bonjour,

    vraiment pas besoin d'en arriver là pour parvenir à cette fin...

    Je me rappelle parfaitement avoir écrit un code (proprement d'abord) puis l'avoir volontairement "éclaté" pour en empêcher toute modification maitrisée... (ma manière de lutter contre un "bidouilleur" qui s'amusait à transformer puis criait ensuite au secours pour réparer les dégâts colatéraux que ses modifs avaient engendrées). Je me rappelle également avoir eu alors moi même les plus grandes difficultés, 3 mois plus tard, à ajouter une foinctionnalité ... Au point qu'il m'a fallu repartir, pour y parvenir, du code "propre" que j'avais heureusement conservé ...

  3. #3
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Une version plus structurée: http://mindprod.com/jgloss/unmain.html
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par wace Voir le message
    Désolé pour les non anglophones, mais je n'ai pas trouvé de version dans la langue de Moliére, si quelqu'un veux nous en faire une traduction ... je pense qu'il sera le bien venu
    Ah ces jeunes, ils ne connaissent même pas les bons magazines, qui en leur temps avaient publiés une traduction : http://www.acbm.com/virus/num_22/inf...re-emploi.html

  5. #5
    Membre confirmé Avatar de heid
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2002
    Messages : 388
    Points : 597
    Points
    597
    Par défaut
    [MODE TROLL]
    Sinon tu demandes un bout de code à un jeune ingénieur nouvellement diplômé, j'ai pas trouvé mieux comme code inmaintenable
    [/MODE TROLL]

  6. #6
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 967
    Points
    6 967
    Par défaut
    Citation Envoyé par heid Voir le message
    [MODE TROLL]
    Sinon tu demandes un bout de code à un jeune ingénieur nouvellement diplômé, j'ai pas trouvé mieux comme code inmaintenable
    [/MODE TROLL]
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  7. #7
    Membre actif Avatar de wace
    Inscrit en
    Septembre 2003
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 224
    Points : 263
    Points
    263
    Par défaut
    Le problème c'est que ca arrive aussi avec des Ingénieurs qui developpent depuis dix ans...
    Les hommes naissent et demeurent libres et égaux en droits; les distinctions sociales ne peuvent être fondées que sur l'utilité commune
    [article 1er Declaration Universelle des Droits de l'Homme]
    www.baseball-grizzlys.com

  8. #8
    Expert éminent sénior
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 803
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 803
    Points : 32 058
    Points
    32 058
    Par défaut
    parmi les auteurs de code les plus propres que j'ai croisé, 2 simples bacheliers de 45 ans(dont 25 de métier), lents mais terrrrrrrriblement efficaces, et une économiste de 24 ans fraichement reconvertie(par contre, elle, elle laissait des bugs).

    Les plus illisibles étaient généralement des maîtres de la technique
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

  9. #9
    Membre confirmé Avatar de heid
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2002
    Messages : 388
    Points : 597
    Points
    597
    Par défaut
    Sinon en catégorie spécial tu as le consultant ...

  10. #10
    Membre actif Avatar de wace
    Inscrit en
    Septembre 2003
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 224
    Points : 263
    Points
    263
    Par défaut
    Citation Envoyé par heid Voir le message
    Sinon en catégorie spécial tu as le consultant ...
    You're the King of the day
    Les hommes naissent et demeurent libres et égaux en droits; les distinctions sociales ne peuvent être fondées que sur l'utilité commune
    [article 1er Declaration Universelle des Droits de l'Homme]
    www.baseball-grizzlys.com

  11. #11
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    940
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 940
    Points : 1 817
    Points
    1 817
    Par défaut
    Il n'y a pas besoin d'un ingénieur incompétent pour écrire du code illisible. Il suffit de laisser les commerciaux fixer les délais.

  12. #12
    Membre confirmé Avatar de heid
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2002
    Messages : 388
    Points : 597
    Points
    597
    Par défaut
    Enigme détente du vendredi au sujet de code inmaintenable.
    trouver le nom de la fonction :

    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    private int ?????? (Date date1, Date date2)
    {
      int retval = 0;
      if (date1 > date2) return 0;
     
      int d1 = date1.Year * 10000 + date1.Month * 100 + date1.Day;
      int d2 = date2.Year * 10000 + date2.Month * 100 + date2.Day;
      int dat = d1 / 100;
      int a = 0, d = 0;
     
      while ((dat <= (d2 / 100)) && (a < 12))
      {
     
        int daymo = 31;
        if (dat/100 == 2) if ((dat%100 %4)==0) daymo -= 2; else daymo -= 3;
        if ((dat/100 % 2)==(dat/100 / 8)) daymo -= 1;
     
        if ((d1/100 == dat) || (d2/100 == dat))
        {
          if (d1/100 == dat) d = daymo - (d1%100)+1;
          if (d2/100 == dat)
          {
            if (d1/100 == d2/100) d -= daymo - d2%100;
            else d = d2%100;
          }
        }
        else d = daymo;
     
        retval += d;
     
        if (dat%100 == 12) dat = (dat/100 + 1)*100 + 1;
        else dat += 1;
     
        a +=1;
      }
     
      return retval;
    }


    Réponse :
    la même qui fait ...
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    return (date1 - date2);

    ... mais ajouter consultantWay() à la fin

  13. #13
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 250
    Points : 259
    Points
    259
    Par défaut
    S'il n'y a pas de volonte de faire du travail de qualite, n'importe quel code devient vite non-maintenable apres quelques annees.

  14. #14
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 250
    Points : 259
    Points
    259
    Par défaut
    Citation Envoyé par heid Voir le message
    Enigme détente du vendredi au sujet de code inmaintenable.
    trouver le nom de la fonction :

    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    private int ?????? (Date date1, Date date2)
    {
      int retval = 0;
      if (date1 > date2) return 0;
     
      int d1 = date1.Year * 10000 + date1.Month * 100 + date1.Day;
      int d2 = date2.Year * 10000 + date2.Month * 100 + date2.Day;
      int dat = d1 / 100;
      int a = 0, d = 0;
     
      while ((dat <= (d2 / 100)) && (a < 12))
      {
     
        int daymo = 31;
        if (dat/100 == 2) if ((dat%100 %4)==0) daymo -= 2; else daymo -= 3;
        if ((dat/100 % 2)==(dat/100 / 8)) daymo -= 1;
     
        if ((d1/100 == dat) || (d2/100 == dat))
        {
          if (d1/100 == dat) d = daymo - (d1%100)+1;
          if (d2/100 == dat)
          {
            if (d1/100 == d2/100) d -= daymo - d2%100;
            else d = d2%100;
          }
        }
        else d = daymo;
     
        retval += d;
     
        if (dat%100 == 12) dat = (dat/100 + 1)*100 + 1;
        else dat += 1;
     
        a +=1;
      }
     
      return retval;
    }


    Réponse :
    la même qui fait ...
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    return (date1 - date2);

    ... mais ajouter consultantWay() à la fin
    En plus, de n'etre pas facilement maintenable, la fonction contient un bug dans la deuxieme ligne du corps de la fonction.

    Ce que je trouve surprenant, c'est qu'un programmeur est par definition un peu faineant. Il ne va pas recoder ce qui existe deja. Et la franchement, il aurait pu demander sur n'importe quel forum de java comment faire.

    Honnetement, je n'aurai jamais pu faire un code aussi complique.

  15. #15
    Invité
    Invité(e)
    Par défaut
    Dans le même genre en français, il y a l'échelle de Goret :
    http://emmanuel-delahaye.developpez.com/goret.htm

  16. #16
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 967
    Points
    6 967
    Par défaut
    Citation Envoyé par Gastiflex Voir le message
    Dans le même genre en français, il y a l'échelle de Goret :
    http://emmanuel-delahaye.developpez.com/goret.htm
    C'est quoi le pire ?
    Le niveau 1 ou le niveau 10 ?
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  17. #17
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Points : 3 325
    Points
    3 325
    Par défaut
    Force 8
    • Plus d'un return par fonction
    j'y suis

    c'est mal d'après vous ??

  18. #18
    Invité
    Invité(e)
    Par défaut
    Je m'étais posé la question aussi la première fois que je l'avais lu, mais je pense que c'est le 10.
    Tout d'abord parce que c'est le même principe que les échelles de Richter ou de Beaufort, et puis quand tu regarde en détail, on voit que c'est de plus en plus dégueu (même si je suis pas d'accord avec tout).

  19. #19
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 250
    Points : 259
    Points
    259
    Par défaut
    Citation Envoyé par beekeep Voir le message
    j'y suis

    c'est mal d'après vous ??
    En effet, c'est discutable. Avoir plusieurs return dans une meme fonction oblige a dupliquer le code de sortie - s'il y en a - plusieurs fois.

    Un des avantages d'avoir plusieurs return est de ne pas avoir a derouler toute la fonction pour comprendre qu'on peut sortir prematurement de la fonction en cas de donnees d'entree invalides par exemple.

    Concernant la force 8 ou l'utilisation abuvise des assertions est un defaut, je suis d'accord. Mais trop d'assertions, c'est beaucoup mieux que pas d'assertions du tout !

  20. #20
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Je pense que le coup du "plusieurs return par fonction" devrait dissocier deux cas:
    • Les contrôles sur les paramètres
    • Les échecs d'appels de fonction dans le programme (ouverture de fichier, allocation mémoire, etc.)

    Généralement, je mets des return pour les premiers mais je m'abstiens pour les seconds.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. [PHP-JS] Combiner un document.write a du code PHP
    Par metatron dans le forum Langage
    Réponses: 18
    Dernier message: 23/02/2018, 13h28
  2. Réponses: 1
    Dernier message: 07/11/2011, 14h35
  3. Réponses: 0
    Dernier message: 03/03/2011, 12h04
  4. code javascript document.write dans Flex
    Par Space23 dans le forum Flex
    Réponses: 0
    Dernier message: 28/09/2009, 11h28
  5. [how to] code snippets
    Par richard_sraing dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 12/11/2007, 12h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo