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

Affichage des résultats du sondage: Quels sont, selon vous, les points clés pour une programmation défensive ?

Votants
40. Vous ne pouvez pas participer à ce sondage.
  • Ne pas faire confiance aux données entrées par les utilisateurs

    34 85,00%
  • Utiliser une abstraction de base de données

    9 22,50%
  • Ne pas réinventer pas la roue :

    10 25,00%
  • Ne pas faire confiance aux développeurs

    10 25,00%
  • Écrire un code SOLID

    12 30,00%
  • Écrire des tests

    21 52,50%
  • Autres (à préciser en commentaire)

    5 12,50%
Sondage à choix multiple
Débats sur le développement - Le Best Of Discussion :

Un développeur propose quelques points clés pour la programmation défensive


Sujet :

Débats sur le développement - Le Best Of

  1. #41
    MikeRowSoft
    Invité(e)
    Par défaut
    Citation Envoyé par marsupial Voir le message
    troisième point c : ne réinventez pas la roue

    Alors je hurle de rire, de colère et je pleure dans le même temps. Le premier que je prends à utiliser un framework dans ma partie, je le désphincte sans les mains et je le laisse se vider de ses tripes.
    De forte chance que selon ton commentaire que cela soit en trop...

    http://www.oracle.com/technetwork/sy...w-1562924.html
    https://developer.microsoft.com/en-us/windows/iot

  2. #42
    Membre éprouvé

    Homme Profil pro
    non
    Inscrit en
    Mai 2008
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : non

    Informations forums :
    Inscription : Mai 2008
    Messages : 394
    Points : 1 116
    Points
    1 116
    Par défaut
    Je lis le sujet distraitement, on sait jamais parfois on apprend des trucs sur dvp. Et là je me pose une question : c'est quoi un code "consistant" ?

    Dans l'article le monsieur parle de "solid code", j'imagine que je comprends ça (je passe la critique évidente sur sa compétence et la pertinence d'un article pareil...). Le dictionnaire pour "consistant" me donne des définitions que je ne parviens pas à mettre en contexte. Je pensais au début à une mauvaise traduction littérale, de "consistent" vers "consistant", mais visiblement ce n'est pas le cas.

    Vous parlez de quoi ? "Consistant", c'est un code quand on a fini de le lire on se sent gavé ?
    [|]

  3. #43
    Membre éclairé

    Femme Profil pro
    Experte JS / Conseillère en best practices / Chercheuse en programmation
    Inscrit en
    Octobre 2007
    Messages
    740
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Experte JS / Conseillère en best practices / Chercheuse en programmation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 740
    Points : 805
    Points
    805
    Par défaut
    Bah, c'est simple, c'est un code qui semble n'avoir été écrit que par une seule personne... (style d'écriture, logique de programmation commune, ...)

    EDIT: 'fin, ça, pour moi, c'est la consistance d'un code...

    Après, en effet, dans l'article original, il parle de SOLID qui, à mon avis, fait plutôt référence à https://fr.wikipedia.org/wiki/SOLID_(informatique)
    Afin d'obtenir plus facilement de l'aide, n'hésitez pas à poster votre code de carte bancaire

    Mon GitHub

    Une alternative à jQuery, Angular, Vue.js, React, ... ? Testez anticore, en quelques secondes à peine !
    (Contributions bienvenues)

  4. #44
    Membre éprouvé

    Homme Profil pro
    non
    Inscrit en
    Mai 2008
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : non

    Informations forums :
    Inscription : Mai 2008
    Messages : 394
    Points : 1 116
    Points
    1 116
    Par défaut
    Citation Envoyé par Lcf.vs Voir le message
    Bah, c'est simple, c'est un code qui semble n'avoir été écrit que par une seule personne... (style d'écriture, logique de programmation commune, ...)
    Non ça c'est la cohérence, soit "consistency" ou "consistent code" (quoi que faudrait en préciser les critères sinon j'achète pas).

    Citation Envoyé par Lcf.vs Voir le message
    Après, en effet, dans l'article original, il parle de SOLID qui, à mon avis, fait plutôt référence à https://fr.wikipedia.org/wiki/SOLID_(informatique)
    C'est mon problème : du coup tous les gens qui parlent de "code consistant" dans ce sujet parlent de quoi ?
    [|]

  5. #45
    Expert éminent Avatar de marsupial
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2014
    Messages
    1 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2014
    Messages : 1 760
    Points : 7 185
    Points
    7 185
    Par défaut
    Citation Envoyé par maske Voir le message
    C'est mon problème : du coup tous les gens qui parlent de "code consistant" dans ce sujet parlent de quoi ?
    Suffisamment minimal pour être fonctionnel et réutilisable facilement et pas nécessairement KISS.

    edit : https://fr.wikipedia.org/wiki/SOLID_(informatique)

    edit2 : La nuance entre consistency et SOLID se trouve que la consistency consiste à faire du SOLID en permanence, par exemple.
    Repeat after me
    Le monsieur lutte pour la défense des libertés individuelles et collectives

    Repeat after me...

  6. #46
    Membre éprouvé

    Homme Profil pro
    non
    Inscrit en
    Mai 2008
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : non

    Informations forums :
    Inscription : Mai 2008
    Messages : 394
    Points : 1 116
    Points
    1 116
    Par défaut
    C'est une définition officielle ou du jargon ?

    Quel rapport avec SOLID ?
    [|]

  7. #47
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 191
    Points : 28 070
    Points
    28 070
    Par défaut
    Le rapport est que dans le message original il est écrit
    Write SOLID code

    That’s the tough part for a (defensive) programmer, writing code that doesn’t suck. And this is a thing many people know and talk about, but nobody really cares or put the right amount of attention and effort into it in order to achieve SOLID code
    Avec SOLId en majuscule représentant l'acronyme SOLID.

    Or cela a été traduit comme
    Write solid code

    That’s the tough part for a (defensive) programmer, writing code that doesn’t suck. And this is a thing many people know and talk about, but nobody really cares or put the right amount of attention and effort into it in order to achieve solid code
    donc avec l'adjectif solid, qui se traduit en solide, consistant.

    Il y a effectivement une erreur de traduction, ici.

    Le sens n'est pas de faire un code solide, consistant (ce qui ne veut effectivement pas dire grand chose en soi) mais de faire un code répondant aux directives SOLID, ce qui est déjà beaucoup plus concret
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  8. #48
    Membre éprouvé

    Homme Profil pro
    non
    Inscrit en
    Mai 2008
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : non

    Informations forums :
    Inscription : Mai 2008
    Messages : 394
    Points : 1 116
    Points
    1 116
    Par défaut
    Citation Envoyé par marsupial Voir le message
    edit2 : La nuance entre consistency et SOLID se trouve que la consistency consiste à faire du SOLID en permanence, par exemple.
    Ça ne veut rien dire. "Consistency" => cohérence (sauf si on parle de bouffe !). Un code est "cohérent" par rapport à des contraintes qu'il faut poser. La première définition que tu donnes n'a pas de rapport avec SOLID, ou alors j'ai pas compris.

    Citation Envoyé par sevyc64
    Le rapport est que dans le message original il est écrit
    Write SOLID code

    That’s the tough part for a (defensive) programmer, writing code that doesn’t suck. And this is a thing many people know and talk about, but nobody really cares or put the right amount of attention and effort into it in order to achieve SOLID code
    Avec SOLId en majuscule représentant l'acronyme SOLID.

    Or cela a été traduit comme
    Write solid code

    That’s the tough part for a (defensive) programmer, writing code that doesn’t suck. And this is a thing many people know and talk about, but nobody really cares or put the right amount of attention and effort into it in order to achieve solid code
    donc avec l'adjectif solid, qui se traduit en solide, consistant.
    C'est exactement le point soulevé. J'ai bien compris la différence quand j'ai regardé la source. Mais le terme "consistant" a eu l'air d'être compris (et utilisé) sans rapport avec alors je me demande si c'est du jargon ou bien juste que la règle est de parler à partir d'un terme dont on imagine une signification sans en vérifier l'origine. J'ai vraiment rien compris à certains posts.

    En tous cas merci pour la précision.
    [|]

  9. #49
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 614
    Points : 713
    Points
    713
    Par défaut
    Citation Envoyé par Stéphane le calme Voir le message
    Il ne s'agit pas seulement de framework, mais de nouvelles fonctionnalités que vous voulez déployer et que vous pouvez facilement prendre dans des paquets testés et approuvés par des milliers de développeurs plutôt que de commencer à élaborer quelque chose par vous-même.
    Ah, cette bonne blague…*"testés et approuvés par des milliers de développeurs"… Les frameworks sont adoptés par effet de mode avant tout. Surtout que par principe, c'est en opposition avec le point…

    Ne faites pas confiance aux développeurs :
    Sic…

    Citation Envoyé par hotcryx Voir le message
    Non, quand t'es sur le marché et SEUL à développer, tu dois développer à la vitesse de la lumière.
    Sachant que la concurrence (boites de dev) sont plus nombreux et par conséquent produisent plus vite même si tu as 1 an d'avance sur eux, ils finiront par te rattraper et te dépasser.
    [...]
    Ce n'est pas réinventer la roue, c'est innover, rénover
    Si tu a un an d'avance sur des boites de devs, donc un an avant que leur produit soit à la hauteur du tiens, et que dans ce laps de temps tu n'a pas dégagé un financement (revenu ou levée de fond) qui te permette de grossir ton équipe et qu'à cette échéance, tu perd tes utilisateurs au profit de ces concurrent, c'est à dire que tu n'a pas su les fidéliser, considère que c'est ton offre qui est pourrie, pas ton choix technique.

  10. #50
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 623
    Points : 1 370
    Points
    1 370
    Par défaut
    Citation Envoyé par Jarodd Voir le message
    Pourquoi considéres-tu que mon équipe a un niveau plus bas que l'équipe qui a pondu le framework ? Qu'elle n'a pas testé/revu mon code ?

    Ok je n'écrirais que 10 lignes, mais les 100 lignes existeront ailleurs dans le code (du framework). Cela ajoute un niveau de compréhension pour un nouveau développeur qui débarque sur un projet, et ne connaît pas nécessairerait le framework => source d'erreur, de duplication, de complexité, de bug. Si la fonctionnalité est pour hier, est-ce le moment d'apprendre un nouveau framework ? Si mon projet est stable sans framework, pourquoi devrais-je en ajouter un pour une fonctionnalité, plutôt qu'écrire moi-même la fonctionnalité ? Ok je vais gagner 1h, mais combien je vais en perdre en passage de connaissance, en mise à jour, en support ? C'est sûr que si on ne compare que le temps de dév de la fonctionnalité, le "sur mesure" perd par rapport au framework. Mais c'est développer avec des oeillères de considérer que c'est le seul temps à prendre en compte.

    Je ne dis pas qu'il ne faut pas utiliser de framework, ni qu'il faut absolument les utiliser. Mais l'argument "si tu n'en utilises pas tu es un mauvais" est complètement idiot. Ce monsieur ne doit pas avoir toucher un projet depuis longtemps pour asséner de telles vérités.
    Dans quelle phrase j'ai écrit que ton équipe à un niveau plus bas que l'équipe qui à pondu le framework?
    Dans quelle phrase j'ai écrit que ton équipe ne test et ne relit pas son code?
    Tu as lu les phrases jusqu'au bout?

    Tu dis qu'il faut un temps d'apprentissage pour le framework, ce qui est vrai, mais tu as de grande chance de :
    - Symfony sur un CV de développeur PHP
    - Spring Framework sur un CV de développeur Java
    - .NET sur un CV de développeur C#
    - Ruby on Rails sur un CV de développeur Ruby
    ...

    Et donc l'entrée dans le projet pourra potentiellement se faire plus facilement que sur un projet écrit avec du code maison (Même un code très bien écrit est très bien relu).

    Sinon je suis d'accord avec ta dernière phrase.

  11. #51
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 623
    Points : 1 370
    Points
    1 370
    Par défaut
    Citation Envoyé par NSKis Voir le message
    Réussir à conseiller de "faire confiance à un framework plutôt qu'à son propre code", c'est juste du n'importe quoi!!!

    En quoi Monsieur l'évangéliste peut dire qu'il faut faire confiance aux capacités de mecs que l'on ne connait pas??? Il n'est pas écrit dans les astres que tout développeur participant à la création d'un framework est automatiquement touché par la grâce divine du dieu "informatique" qui lui permet de pondre du code sans défaut!

    D'ailleurs, il suffit de suivre un peu les news qui nous annoncent tous les 2 jours la détection d'une faille zero-day dans l'un ou l'autre produit (que cela soit software ou hardware) pour se convaincre qu'il n'y a aucun produit exempt de problème!!!
    Pourtant tu fais bien confiance aux personnes qui écrivent ton langage préféré.

  12. #52
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 969
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 969
    Points : 3 375
    Points
    3 375
    Par défaut
    Citation Envoyé par FaridM Voir le message
    Et donc l'entrée dans le projet pourra potentiellement se faire plus facilement que sur un projet écrit avec du code maison (Même un code très bien écrit est très bien relu).
    Par contre si tu as pondu ton FW et qu'il a du succès, là ça en jette
    Si la réponse vous a aidé, pensez à cliquer sur +1

  13. #53
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Citation Envoyé par FaridM Voir le message
    [..] - .NET sur un CV de développeur C# [..]
    Juste pour ce point, et pour être tatillon, on ne trouve pas nécessairement cette info sur un CV.
    Connaître le C# sans connaitre le Framework .NET je crois pas que ce se soit déjà vu.

    Bon réveillons à tous !
    Plus je connais de langages, plus j'aime le C.

  14. #54
    Expert confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Points : 4 442
    Points
    4 442
    Par défaut
    Citation Envoyé par jopopmk Voir le message
    Juste pour ce point, et pour être tatillon, on ne trouve pas nécessairement cette info sur un CV.
    Connaître le C# sans connaitre le Framework .NET je crois pas que ce se soit déjà vu.
    Connaitre le C# sans connaitre la différence entre C# et .NET c'est courant par contre. (Mais en soit pas vraiment gênant).

  15. #55
    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 056
    Points
    32 056
    Par défaut
    Citation Envoyé par Iradrille Voir le message
    Connaitre le C# sans connaitre la différence entre C# et .NET c'est courant par contre. (Mais en soit pas vraiment gênant).
    Ca pose quand même la question de ce qu'on attend du développeur. Si on veut un simple exécutant qui code ce qu'on lui demande de coder sans se poser de questions, tu as évidemment raison : savoir se servir de l'outil est la seule chose qui compte.

    En revanche, si on veut un esprit capable de voir une problématique dans sa globalité, de faire de la nuance, de replacer son travail dans un contexte plus général, bref, d'être partie prenante et pas simplement exécutant, là, c'est plus gênant. On parle quand même du fondement de base de leur outil de travail. Si je veux quelqu'un capable de me dire quand je fais fausse route, j'ai besoin d'une personne avec des bases théoriques pour remettre ses critiques dans un contexte compréhensible.
    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.

  16. #56
    Membre habitué

    Homme Profil pro
    Développeur .Net et Web, Ingénieur en Analyse et Conception de SII
    Inscrit en
    Novembre 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur .Net et Web, Ingénieur en Analyse et Conception de SII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 82
    Points : 144
    Points
    144
    Billets dans le blog
    2
    Par défaut Bonjour
    Je pense que tout développeur ne peut pas echaper à la progratiommation défensive dès lors que la gestion des erreurs s'avérer très importante dans le développement de logiciels...
    Fely Kanku Developpeur .Net et analyste programmeur

  17. #57
    Membre expert Avatar de air-dex
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 653
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 653
    Points : 3 773
    Points
    3 773
    Par défaut
    Citation Envoyé par Stéphane le calme Voir le message
    Ne faites jamais confiance aux données entrées par l'utilisateur
    C'est la base de la programmation défensive.

    Citation Envoyé par Stéphane le calme Voir le message
    Utilisez une abstraction de base de données
    C'est un cas particulier des points 1 et 3 appliqué aux BDD. L'interaction avec la BDD est trop critique pour être laissée entre les mains d'un bout de code maison, plus ou moins normé ISO 1664, à base de sprintf("la requête SQL", <arguments à passer à la requête>); (et encore je suis gentil).

    Citation Envoyé par Stéphane le calme Voir le message
    Ne réinventez pas la roue
    Ce n'est pas spécifique à la programmation défensive.

    Citation Envoyé par Stéphane le calme Voir le message
    Ne faites pas confiance aux développeurs
    À partir d'un moment tu es obligé de faire un minimum confiance à ce qu'écrivent tes collègues. Cela s'appelle le travail en équipe. Cela n'empêche pas la vérification de ce que le collègue a écrit, lors de la recette ou bien à d'autres moments. Personne n'a la science infuse et n'est à l'abri de l'écriture de conneries dans le code. Mais tu ne peux pas tout faire tout seul non plus, surtout si c'est un gros projet.

    Citation Envoyé par Stéphane le calme Voir le message
    Écrire des tests
    Cela n'est pas spécifique à la programmation défensive, mais il convient de garder une trace de certains cas particuliers qu'on a pu rencontrer. Je pense à des bogues où une valeur mal gérée a pu foutre le bordel. Du coup c'est bien de rajouter un test avec cette valeur qui un jour a foutu le bordel, afin que cela ne se reproduise pas.

    Au delà du code j'ai envie de rajouter "utiliser des technologies avec un typage fort" et "vérifier le type des valeurs". Il n'y a pas que les valeurs qui peuvent poser problème. Il y a les types aussi. 4 n'est pas forcément "4" ou encore '4', et encore moins true. Il faut donc s'assurer que la valeur ait le bon type afin que le traitement réalisé soit le bon. Il ne faut pas hésiter à transtyper si nécessaire. Il ne faut pas laisser de place au hasard.

    Code javascript : 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
    function quatrePlusTrois(quatre, trois) {
        return quatre + trois;
    }
     
    function quatrePlusTroisInt(quatre, trois) {
        return parseInt(quatre) + parseInt(trois);
    }
     
    function quatrePlusTroisStr(quatre, trois) {
        return quatre.toString() + trois.toString();
    }
     
    console.log(quatrePlusTrois(4, 3));           // 7
    console.log(quatrePlusTrois(4, "3"));         // "43"
    console.log(quatrePlusTrois('4', '3'));       // "43"
     
    console.log(quatrePlusTroisInt(4, 3));        // 7
    console.log(quatrePlusTroisInt(4, "3"));      // 7
    console.log(quatrePlusTroisInt('4', '3'));    // 7
     
    console.log(quatrePlusTroisStr(4, 3));        // "43"
    console.log(quatrePlusTroisStr(4, "3"));      // "43"
    console.log(quatrePlusTroisStr('4', '3'));    // "43"

    Citation Envoyé par sevyc64 Voir le message
    La programmation défensive ne se limite pas à la gestion des erreurs et exception, j'aurais même envie de dire que ça n'en fait même pas partie.
    La programmation défensive consiste à gérer et digérer, principalement, des situations et des données tout à fait correctes sur le plan formel, mais inattendues et erronées sur le plan sémantique. Dans 90% des cas ces situations ne feront pas planter le programme, ne génèreront pas d'erreurs, mais, parce qu'elles sont inattendues et pas conforme à ce qui est attendu dans la cas contexte, provoqueront des résultats aberrants tout en étant formellement justes.

    Imagine un régulateur de vitesse qui doit réguler à 100km/h, si, à moment donné, il lit une vitesse à 10km/h, il va en déduire qu'il doit fortement accélérer. Ce qui est logique, normal et formellement juste.
    Mais si cette vitesse lue à 10km/h est un artéfact au milieu d'une série de mesure autour des 100km/h, la mesure reste formellement juste (10km/h est une données valide) mais sémantiquement fausse (ce n'est pas une données correcte au milieu des autres). Le comportement du régulateur (forte accélération) reste formellement juste mais complètement aberrant dans le contexte (il ne doit pas accélérer, il est déjà dans la plage de régulation).
    Et pourtant, à aucun moment, il n'y a eu génération d'erreurs ou d’exceptions.

    Évidemment, ici, la solution est que le régulateur ne se base pas sur une seule mesure pour déterminer la vitesse réelle, mais sur la moyenne d'une série de mesures successive, avec éventuellement un algorithme d'exclusion des valeurs excentriques.


    La programmation défensive c'est la gestion de valeurs exotiques pour les variables d'entrées. Le vrai implique le vrai et le faux n'est impliqué que par le faux. Si une fonction laisse passer du faux alors cela peut enrayer le reste du programme, même si la fonction est juste et fait le travail qu'on lui demande à la perfection. La programmation défensive a donc avant tout pour but d'éviter qu'il y ait le moindre grain de sable dans la machine.
    "Ils ne savaient pas que c'était impossible alors ils l'ont fait." Mark Twain

    Mon client Twitter Qt cross-platform Windows et Linux. (en cours de développement).

  18. #58
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 627
    Points : 10 551
    Points
    10 551
    Par défaut
    Citation Envoyé par air-dex Voir le message
    La programmation défensive c'est la gestion de valeurs exotiques pour les variables d'entrées.
    Pas forcément

    Un exemple concret: la conversion UTF-8 vers UTF-16 et vice et versa.

    Pour des raisons X, j'ai codé les 2 algos à la main (à la bourrin mais ce n'est pas trop long et assez lisible)
    Mais je ne suis pas à l'abri que mes algos soient bogués: donc il faut te prévenir au moindre problème.

    Le plus simple: c'est la conversion retourne "chaîne vide" (donc rien ne s'affiche). Mais des fois, tu mets du temps à t'en apercevoir/ à percuter.
    Le mieux: un système d'alerte ou de logs, qui t'indique où se trouve précisément le problème

  19. #59
    Expert éminent Avatar de marsupial
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2014
    Messages
    1 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2014
    Messages : 1 760
    Points : 7 185
    Points
    7 185
    Par défaut
    [QUOTE=MikeRowSoft;8855609]De forte chance que selon ton commentaire que cela soit en trop...[QUOTE]

    Sans doute. Je me permets de détailler.

    a) tous les projets ont une deadline en temps dans 115% des cas intenable avec la contrainte de résultat.

    b) mon projet se positionne dans une situation désespérée ( suite à un énorme piratage )


    Mes options étaient extrêmement simples et binaires : tout faire seul et mal avec toute la pression sur les épaules. Vite fait mal fait.
    J'ai choisi la qualité en rémunérant plus que grassement des personnes à qui j'ai inculqué la deadline résultat et pas la contrainte temps.
    Je l'ai fait à ma manière en ne touchant pas un kopeck pendant deux ans ( enfin presque : Volontaire Service Long dans le Génie à 42 ans alors que je suis Réformé Physique 7 mais avec un QI OOR, Out Of Order) où j'ai enseigné l'art de coder sécurisé tout en produisant quelque chose d'adaptable à tout environnement, jamais fait et en réinventant la sécurité. Tout au moins le sens attribué à ce mot. La sécurité GAFAM, pardonne(z) moi, mais c'est de la merde.
    Si tu crois qu'une telle qualité s'obtient en contant fleurette à la secrétaire, tu(vous) te(vous) goures(z).

    Aujourd'hui, je pense ne plus rien avoir à prouver dans ma partie : 250+ brevets, 2 Système d'Exploitation dont un fork, une norme, et la fierté du job accompli par TOUTE l'équipe alors qu'il y a deux ans l'objectif était loin d'être acquis.
    Ca ne s'est pas fait sans mal et Mickaël et Stéphane, par leurs news, pas mal de commentaires de membres du site et en règle générale tout DVP nous ont aidé.

    Je crois qu'aujourd'hui, beaucoup aimerait être à notre place. Aucun ressentiment mais qui voulait être à la notre en janvier 2015 ? Personne. J'ai été le seul à répondre présent. Nous n'avons reçu que mépris et zéro encouragement de la part de personnes que je ne citerai pas. Lorsque ce ne sont pas des batons dans les roues pour être racheté pour des clopinettes. On s'est même fait gauler le projet par un actionnaire pour nous concurrencer.

    [/HS MyLife]

    Résultat : vous le lirez dans le papier journal de demain, Le Figaro "Sans la liberté de blâmer, il n'y a point d'éloge flatteur" - Beaumarchais.
    Repeat after me
    Le monsieur lutte pour la défense des libertés individuelles et collectives

    Repeat after me...

  20. #60
    MikeRowSoft
    Invité(e)
    Par défaut
    Citation Envoyé par marsupial Voir le message

    Sans doute. Je me permets de détailler. [...]

    Résultat : vous le lirez dans le papier journal de demain, Le Figaro "Sans la liberté de blâmer, il n'y a point d'éloge flatteur" - Beaumarchais.
    Bon courage, ne t'arrête pas, je n'ai fait qu'une supposition pour mieux connaître le caractère derrière le message. Cela dit, des choses impossibles sont possibles et le manque de possibilité n'est pas une impossibilité (refus engendre refus).

Discussions similaires

  1. Réponses: 0
    Dernier message: 10/08/2011, 12h19
  2. [Système] quelques mot-clés pour apprendre
    Par aspo dans le forum Langage
    Réponses: 2
    Dernier message: 07/02/2007, 16h14

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