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 :

[Tutoriel] L'art de programmer salement

  1. #1
    Membre expérimenté Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    885
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 885
    Points : 1 522
    Points
    1 522
    Par défaut [Tutoriel] L'art de programmer salement
    On voit souvent, sur ce site comme sur d'autres, des articles sur « comment coder proprement », « les bonnes habitudes de programmation », etc, etc... En revanche, j'ai vu très peu d'articles expliquant comment coder salement. Je tiens à réparer cet oubli dans ce tutoriel qui, je l'espère, vous servira et vous permettra de le mettre en pratique sans délai.

    Et effet, ma longue expérience dans des entreprises diverses et variées m'a convaincu que, si programmer proprement vous vaut les félicitations de votre supérieur (et encore), les raisons de programmer salement sont généralement bien plus nombreuses : besoin d'affirmer son autorité, de se rendre indispensable, nécessité de créer aujourd'hui les bugs de demain, vengeance personnelle, bizutage des nouveaux, principe de Dilbert, tout vous pousse à programmer comme un gros porc. D'ailleurs, étant donné tout le code dégueulasse que j'ai vu dans ma carrière, je suis persuadé que la majorité d'entre vous en êtes déjà convaincus.

    Mais j'en vois déjà qui vont me dire « pour programmer salement, il suffit de ne pas programmer proprement ». Pourquoi faire un article là-dessus ? Alors là je m'inscris en faux et je m'insurge : Si ne pas programmer proprement est à la portée de n'importe quel débutant, programmer salement est un art qui demande des compétences, une parfaite connaissance des langages de programmation, de l'inventivité, de la subtilité et de la créativité.

    A part quelques génies qui font ça de manière innée (je ne citerais pas de noms mais j'en connais), c'est un domaine qui s'apprend, qui se travaille, et qui nécessite un effort quotidien. Je tiens à cette occasion à remercier mon ancien chef qui m'a tout appris dans ce domaine, et sans qui je ne serais qu'un « expert en développement » comme on en voit des milliers.

    1) Le nommage des variables

    La technique de base pour programmer salement, quel que soit le langage, réside dans le nommage des variables. Mais bien entendu il ne faut pas faire ça n'importe comment : appeler une variable « sslkhskldghlfd » sera vu comme un acte de sabotage évident. Par contre, appeler une variable « Toponime », « DatteInsrciption » avec des petites fautes d'orthographes (mais totalement conforme à la charte de programmation si vous en avez une) passera presque inaperçu. Le temps que quelqu'un s'en aperçoive, le code concerné aura été copié-collé un peu partout, utilisé dans les classes dérivées, et il sera très vite plus coûteux de le remplacer partout que de le laisser tel quel.
    Si vous avez la chance d'utiliser un langage qui accepte les accents (VB, ACCESS), ne vous en privez surtout pas : code non portable, problèmes d'affichage pour certains éditeurs, création automatique de BOM ou transformation en Unicode pour d'autres, gestionnaire de sources configuré en ANSI, le pouvoir de nuisance des accents est redoutable. Vous pouvez aussi tirer un large parti des mots français et anglais qui se ressemblent, comme « connexion » et « connection », « langage » et « language », « fonction » et « function », en mélangeant habilement français et anglais : « OpenConnexion » ou « OuvreConnection » sont d'excellents noms de fonction, par exemple.

    2) L'indentation

    Veillez à respecter très précisément l'indentation de votre code. Plus vous avez une indentation rigoureuse, plus vous pourrez y glisser quelques imperfections d'autant plus vicieuses que tout le reste est parfait, comme dans le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Compteur = 0;
    for (i = 0; i < 10; i++);
    {
    	Compteur++;
    }
    // Suite du code : Compteur est égal à 1, pas à 10 !
    3) Ne jamais mettre de parenthèses, sauf lorsque c'est inutile

    Pour appliquer cette règle, il vous faudra connaître sur le bout des doigts la priorité des opérateurs, priorités d'autant plus amusantes à apprendre qu'elles sont différentes selon les langages. Vous pourrez ensuite allègrement mélanger les « and » et les « or », les « = » et les « == », les « & » et les « && » pour faire des conditions dont le résultat sera pratiquement imprévisible sans passer dessus avec le debugger. N'oubliez pas les opérateurs peu connus : par exemple en C++ l'opérateur virgule, l'opérateur bool ou l'opérateur vide. Vous pouvez même les redéfinir, et c'est encore plus intéressant : l'opérateur « - » peut être redéfini pour que « a - b » renvoie la valeur de a + b.

    4) Jamais les bons commentaires

    C'est la partie qui fera le plus appel à votre créativité : ne pas mettre de commentaires dans vos programmes serait une faute professionnelle. Mettre des commentaires pertinents serait improductif. Ici, tout le talent consiste à mettre des commentaires, mais suffisamment inutiles ou imprécis pour qu'ils ne servent à rien. Mettez-y le maximum de fautes d'orthographe afin que, même s'ils contiennent encore quelques informations intéressantes, ils soient tellement désagréables à lire que personne ne le fera.

    5) Les lignes n'ont pas que 80 caractères

    N'hésitez pas à mettre le maximum d'instructions sur la même ligne. Les subtilités que vous mettrez dans vos programmes seront d'autant plus discrètes. Encore plus vache : mettez une centaine de blancs avant les instructions importantes. Le stagiaire, qui n'a qu'un écran 17 pouces, ne les verra jamais : elles sont à droite de la partie visible et il faut scroller pour les voir. Bien sûr il n'y comprendra donc rien et vous pourrez le traiter de nul. Soyez odieux avec les stagiaires, c'est bon pour votre avancement.

    6) Variables préprocesseur

    Je vous conseille d'utiliser les petites astuces suivantes avec parcimonie, leur efficacité étant amoindrie par une utilisation trop intensive. Trop de sale tue le sale. Néanmoins, il est bon de les connaître et de les utiliser de temps en temps :

    Par exemple, si a la ligne 1352 de votre programme C++, dans une fonction effroyablement complexe, vous avez l'instruction suivante :

    Vous pouvez avantageusement la remplacez-la par ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Variable = __LINE__ - 1352;
    Résultat : le simple fait de copier-coller cette fonction à un autre endroit la fera très certainement planter. Même l'insertion d'une ligne vide avant la ligne 1352 changera le comportement de la fonction. Une bonne occasion pour engueuler l'« imbécile qui a fait une connerie » (le stagiaire qui a ajouté un commentaire, par exemple). Il faut que les stagiaires comprennent bien qu'ils n'ont pas à toucher au code. Leur boulot c'est de faire le café.

    De la même façon, en PHP, on peut utiliser le mot-clé préprocesseur « __FILE__ » qui donne le nom complet du fichier. Vous voyez l'astuce ? Vous testez cette variable, et le seul fait de déplacer le fichier fait planter le programme. Si on vous fait une remarque, vous pourrez dire innocemment « Ah bon ? Chez moi ça marche ! ».

    Pour plus d'efficacité, vous pouvez bien sûr combiner les points 5 et 6 et mettre ces instructions à la fin des lignes très longues et totalement imbitables.

    7) C'est devenu un classique, mais vous pouvez toujours l'utiliser, ça ne coute rien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #define private public
    #define protected public
    8) Et pour finir dans la même veine, je vous rappelle ce petit chef-d'oeuvre qui a failli être intégré au noyau Linux en 2003. C'est un modèle du genre sur lequel vous pouvez prendre exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if ((options == (__WCLONE|__WALL)) && (current->uid = 0))
            retval = -EINVAL;
    En vous souhaitant à tous des programmes bien crados, je vous invite à compléter ce tutoriel si vous avez vous-même des techniques de sale programmation que j'aurais oublié.

  2. #2
    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 044
    Points
    32 044
    Par défaut
    Mon père a un jour croisé du code avec des noms de variables et des commentaires en Slovaque. En France dans une boite Allemande(et à l'époque sans aucun site dans ce qui était encore la Tchécoslovaquie).
    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.

  3. #3
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 338
    Points : 4 295
    Points
    4 295
    Par défaut
    Vous allez rire, mais je suis en train de reprendre du code (Access) où :
    - les noms de requêtes sont Requête1, requête2 jusqu'à 10 ou 11, mais qui s'appelle entre elles, sans aucun critère complémentaire
    - des noms de variables, genre toto, tata, maman
    - aucun commentaire sur rien

    Bref, un régal de truc sale
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 416
    Points
    91 416
    Billets dans le blog
    20
    Par défaut
    1) Le nommage des variables
    Une technique assez vicieuse est aussi de donner aux variables ou aux fonctions des noms qui ne correspondent pas à leur contenu.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    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 044
    Points
    32 044
    Par défaut
    Variante du 5, particulièrement efficace en COBOL(car en COBOL, le point ferme tous les IF ouverts) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    IF BLA_BLA PERFORM MY_BLA_BLA                                                              ELSE
    MOVE A TO B
    IF BLI_BLI PERFORM MY_BLI_BLI                                                              ELSE
    MOVE A TO C
    IF BLU_BLU PERFORM MY_BLU_BLU
    MOVE MY_DATA TO MY_OTHER_DATA                                                              .
    (pour info, le PERFORM appelle une procédure)
    imaginez que BLA_BLA, BLI_BLI et BLU_BLU peuvent être vraies toutes les trois... Il y en avait sur 800 lignes. J'ai du tout imprimer, stabiloter, reformater, refactorer, ça m'a pris plus d'une semaine...pour juste trouver un petit truc et faire une micro modif. Je n'ai rien compris au reste du programme.
    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.

  6. #6
    Membre émérite Avatar de shadowmoon
    Homme Profil pro
    Expert technique et fonctionnel .Net
    Inscrit en
    Mai 2005
    Messages
    1 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Expert technique et fonctionnel .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 066
    Points : 2 645
    Points
    2 645
    Par défaut
    Citation Envoyé par illight Voir le message
    du code (Access) où ... les noms de requêtes sont Requête1, requête2 jusqu'à 10 ou 11, mais qui s'appelle entre elles, sans aucun critère complémentaire
    Une fois, j'ai vu un truc plus sale, dans un code C# : Des fonctions nommées fonc1, fonc2 ... jusqu'à fonc16, qui s'appellent entres-elles et avec, en plus, de la récursivité. Le tout dans des if en cascade, parfois conditionnés par les fonctions.

    Çà donnait un truc dans le genre

    Code : 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 void func9(parametres)
          {
              if (conditions)
              {
                    ...
                  if (conditions)
                  {
                          ...
                      func12(parametres);
                  }
    
                  else
                  {
                           ...
                      if (func5(parametres))
                      {
                            ...
                      }
                  }
              }
    
              else
              {
                    ....
                  if (conditions)
                  {
    
                  }
    
                  else
                  {
                           .....
                      func9(parametres);
                  }
              }
          }
    il n'y a jamais eu qu'un seul chrétien et il est mort sur la croix Friedrich Nietzsche
    L'homme est un apprenti, la douleur est son maitre Alfred de Musset
    C'est avoir tort que d'avoir raison trop tôt Praefectus Praetario Hadrianus

    my best memories ever : 2008 London Circle Line "The Booze Train"

  7. #7
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Franchement j'adore 10_GOTO_10, à quand le tutoriel officiel ?
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  8. #8
    Expert confirmé Avatar de ManusDei
    Homme Profil pro
    vilain troll de l'UE
    Inscrit en
    Février 2010
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : vilain troll de l'UE

    Informations forums :
    Inscription : Février 2010
    Messages : 1 619
    Points : 4 350
    Points
    4 350
    Par défaut
    Ca me fait penser à autre chose de très sale, jouer sur les options de compilation pour que ça compile uniquement avec telle ou telle version des libs, ou (plus simple pour soi) uniquement quand on utilise une ou plusieurs options obscures du compilateur (sans l'avoir documenté).

    Rajouter une surcouche au préprocesseur, qui ne fait pas grand chose, mais empêche toute compilation future. Par exemple la redéfinition de + en - peut se faire là aussi, au bout de combien de temps le dev ira voir la chaîne de compilation pour comprendre pourquoi sa nouvelle fonction qui fait des additions renvoie des résultats anormaux ?
    http://www.traducteur-sms.com/ On ne sait jamais quand il va servir, donc il faut toujours le garder sous la main

  9. #9
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Dans la même série, pas plus tard que récemment, j'ai eu à modifier un programme de facturation pour l'aligner sur le nouveau taux de TVA à 20%.
    Je parcours les tables et tombe sur une bien nommée TauxTVA. Je me dis chouette, ça devrait le faire. En plus dedans une seule et unique ligne avec une TVA à 19,6%.
    Bon, je fais la modification et teste une facturation bidon histoire de voir si cela a bien été pris en compte...

    Oh la surprise, TVA toujours à 19,6% !!!

    Après investigations, le pingouin n'a rien trouvé de mieux que de coder le taux de TVA en dur dans chaque formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (date <= ...) { TVA = 0.186; } elseif (date <= ...) { TVA = 0.196; } else ...
    Au final et après dépiautage, aucune partie du programme ne faisait appel à ce fichu taux de TVA présent dans la table TauxTVA.

    Fail ^^

  10. #10
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 643
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 643
    Points : 11 131
    Points
    11 131
    Par défaut
    J'ai pu voir à plusieurs endroits du forum qu'une méthode dite "larache" était parfois appliquée lors de l'élaboration de certains logiciels. Voir les liens ci-dessous pour plus de détails :

    http://www.developpez.net/forums/d10...e/#post6059124
    http://www.developpez.net/forums/d12...e/#post6882207
    http://www.developpez.net/forums/d10...n/#post5703097

  11. #11
    Expert confirmé
    Avatar de Katyucha
    Femme Profil pro
    DevUxSecScrumOps Full Stack Bullshit
    Inscrit en
    Mars 2004
    Messages
    3 287
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Irlande

    Informations professionnelles :
    Activité : DevUxSecScrumOps Full Stack Bullshit

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 287
    Points : 5 075
    Points
    5 075
    Par défaut
    Citation Envoyé par Auteur Voir le message
    J'ai pu voir à plusieurs endroits du forum qu'une méthode dite "larache" était parfois appliquée lors de l'élaboration de certains logiciels. Voir les liens ci-dessous pour plus de détails :

    http://www.developpez.net/forums/d10...e/#post6059124
    http://www.developpez.net/forums/d12...e/#post6882207
    http://www.developpez.net/forums/d10...n/#post5703097
    Mais là, ce n'est pas de larrache, ici, on le fait exprès pour emmerder le monde
    Grave urgent !!!

  12. #12
    Membre confirmé Avatar de Jabbal'H
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 403
    Points : 580
    Points
    580
    Par défaut
    Un ami a vu il y a peu sur un programme en Delphi une option de compil sympa, cela autorise les dépassements d'index de tableau :d
    Le soft Delphi était migré en c#, il s'est arraché les cheveux à comprendre pourquoi çà plantait sur le code migré (c#) et pas sur le Delphi ! :d
    " Je préfère comprendre les gens qui ne me comprennent pas "

  13. #13
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 146
    Points : 172
    Points
    172
    Par défaut
    Citation Envoyé par el_slapper Voir le message
    Variante du 5, particulièrement efficace en COBOL(car en COBOL, le point ferme tous les IF ouverts) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    IF BLA_BLA PERFORM MY_BLA_BLA                                                              ELSE
    MOVE A TO B
    IF BLI_BLI PERFORM MY_BLI_BLI                                                              ELSE
    MOVE A TO C
    IF BLU_BLU PERFORM MY_BLU_BLU
    MOVE MY_DATA TO MY_OTHER_DATA                                                              .
    (pour info, le PERFORM appelle une procédure)
    imaginez que BLA_BLA, BLI_BLI et BLU_BLU peuvent être vraies toutes les trois... Il y en avait sur 800 lignes. J'ai du tout imprimer, stabiloter, reformater, refactorer, ça m'a pris plus d'une semaine...pour juste trouver un petit truc et faire une micro modif. Je n'ai rien compris au reste du programme.
    ca me rapelle des souvenir la BNP

    21 pages de transact SQL pour dire je suis pas en france mais je suis en europe donc je suis en espagne !

  14. #14
    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 044
    Points
    32 044
    Par défaut
    Citation Envoyé par Aurélien LEQUOY Voir le message
    ca me rapelle des souvenir la BNP

    21 pages de transact SQL pour dire je suis pas en france mais je suis en europe donc je suis en espagne !
    J'ai bossé à la BNP, mais ça, c'était ailleurs.

    Enfin, dans tous les langages il y a probablement moyen de mettre ce genre de trompe-l'oeil...
    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.

  15. #15
    Expert éminent sénior
    Homme Profil pro
    Ingénieur d'Etude Mainframe/AS400
    Inscrit en
    Novembre 2012
    Messages
    1 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'Etude Mainframe/AS400
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 1 763
    Points : 10 738
    Points
    10 738
    Par défaut
    Citation Envoyé par el_slapper Voir le message
    Variante du 5, particulièrement efficace en COBOL(car en COBOL, le point ferme tous les IF ouverts) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    IF BLA_BLA PERFORM MY_BLA_BLA                                                              ELSE
    MOVE A TO B
    IF BLI_BLI PERFORM MY_BLI_BLI                                                              ELSE
    MOVE A TO C
    IF BLU_BLU PERFORM MY_BLU_BLU
    MOVE MY_DATA TO MY_OTHER_DATA                                                              .
    (pour info, le PERFORM appelle une procédure)
    imaginez que BLA_BLA, BLI_BLI et BLU_BLU peuvent être vraies toutes les trois... Il y en avait sur 800 lignes. J'ai du tout imprimer, stabiloter, reformater, refactorer, ça m'a pris plus d'une semaine...pour juste trouver un petit truc et faire une micro modif. Je n'ai rien compris au reste du programme.
    Diabolique ce code

  16. #16
    Inactif  
    Homme Profil pro
    Collégien
    Inscrit en
    Octobre 2012
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Octobre 2012
    Messages : 78
    Points : 0
    Points
    0
    Par défaut
    si vous voulez avoir du vrai code crade, regardez le code de la bibliothèque standard

  17. #17
    Membre éclairé
    Avatar de Etanne
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 469
    Points : 855
    Points
    855
    Par défaut
    Un petit lien qui m'a fait penser à cette discussion : How To Write Unmaintainable Code

    Une belle bible !
    "Phylactère temporaire" = tooltips

    Votre problème a été résolu ? Alors utilisez sur et

  18. #18
    Membre expert

    Développeur NTIC
    Inscrit en
    Janvier 2011
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Âge : 33

    Informations professionnelles :
    Activité : Développeur NTIC
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 670
    Points : 3 942
    Points
    3 942
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Une technique assez vicieuse est aussi de donner aux variables ou aux fonctions des noms qui ne correspondent pas à leur contenu.
    Ou sinon il y a la technique d'appeler ses variables de telle façon :

    _
    __
    ___
    ____
    _____
    ______

    C'est simple, efficace et on peut même se perdre soit même dans ce dédale d'underscore.
    L'homme est un fou pour l'homme. Toi qui viens de me mettre un aie au moins le courage d'expliquer pourquoi tu n'es pas d'accord.

  19. #19
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Mr_Exal Voir le message
    Ou sinon il y a la technique d'appeler ses variables de telle façon :

    _
    __
    ___
    ____
    _____
    ______

    C'est simple, efficace et on peut même se perdre soit même dans ce dédale d'underscore.
    Ouah ! Pas mal !!! Sinon, des noms de variable comme mon pseudo, ça peut aussi pousser au meurtre !

  20. #20
    Expert confirmé
    Avatar de Katyucha
    Femme Profil pro
    DevUxSecScrumOps Full Stack Bullshit
    Inscrit en
    Mars 2004
    Messages
    3 287
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Irlande

    Informations professionnelles :
    Activité : DevUxSecScrumOps Full Stack Bullshit

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 287
    Points : 5 075
    Points
    5 075
    Par défaut
    Citation Envoyé par 7gyY9w1ZY6ySRgPeaefZ Voir le message
    Ouah ! Pas mal !!! Sinon, des noms de variable comme mon pseudo, ça peut aussi pousser au meurtre !
    Il existe des programmes qui le font déjà. Ca parse ton code et remplace les variables par des chaines aléatoires assez longues. Je vous avoue : Relecture Treeeees fastidieuse
    Grave urgent !!!

Discussions similaires

  1. [Tutoriel] 50 conseils en programmation Flash Actionscript 3
    Par Djug dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 09/03/2012, 11h54
  2. Réponses: 5
    Dernier message: 20/09/2011, 18h15
  3. De l'art de programmer en Perl ou Perl Best Practices
    Par JakoJako dans le forum Livres
    Réponses: 14
    Dernier message: 05/06/2009, 13h15

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