Un lecteur de linuxfr a dit "je ne fais pas de tests unitaires parce que je suis faineant". Cette remarque m'a profondement interpelle.
Donc laissez-moi vous raconter une parabole: l'autre jour, je rangeais les courses dans le frigidaire en discutant avec un pote, informaticien et faineant (pleonasme ?), comme moi. Il me voit enlever l'emballage en carton du paquet de 16 yaourts avant de les mettre au frigo.
- tu enleves l'emballage ?
- oui
- mais c'est beaucoup de travail. Je croyais que tu etais un faineant comme moi ?
- oui, mais vois-tu, j'ai decouvert que c'est beaucoup plus de travail de prendre un yaourt si on n'a pas enleve l'emballage avant. Et il y a 16 yaourts a prendre. Il est plus economique d'enlever l'emballage des le debut.
Le faineant amateur va simplement mettre les yaourts au frigo, mais le vrai faineant va enlever l'emballage car il sait que celui-ci le fatiguera plus tard.
Apres cette parabole hautement philosophique, j'en reviens a mon sujet: si je fais des tests unitaires, c'est justement parce que je suis faineant. C'est beaucoup moins fatiguant d'ecrire un test unitaire puis de le valider avec du code, que d'ecrire du code en songeant a toutes les facons dont il sera utilise et en essayant de garantir que ca marchera a tous les coups. En plus, quand on n'a pas de suite de test unitaire, on est souvent oblige de lancer l'application et de faire quelques manip a la main. C'est super fatiguant.
Quand j'aurai un bug, je pourrai me permettre d'etre faineant: je le rajouterai a ma suite de test unitaire, je pourrai facilement faire la modif du code pour le corriger puisque j'aurai deja ma suite de test unitaire pour valider les autres fonctionnalites.
Voila, tout ca pour dire que le vrai faineant, c'est celui qui fait des tests unitaires.
Les tests unitaires, c'est bon, mangez-en !
# Rangement du frigo Howto
Posté par Ju. . Évalué à 5.
- ils se rangent plus facilement, certains arrivent à se faufiler dans les interstices ---> Gain de place
- Quand j'en veux un je le prends sans avoir à mettre les deux mains ---> Gain d'energie
Perte constatée aucune : lorsque je range les courses dans le frigo j'y met déja les deux mains
En plus, pour le coup des emballages, c'est dommage de refroidir du carton.
Désolé je suis resté sur la parabole. Promis quand je developperai je ferai des tests unitaires (d'abord je finis de diver into Python)
[^] # Microbes
Posté par sherlokk . Évalué à 4.
[^] # Re: Microbes
Posté par Florent C. . Évalué à 3.
Sinon pour la fainéantise et les tests unitaires, je comprends bien, et j'aimerai bien me lancer là dedans, mais quand un employeur veut voir quelque chose d'utilisable tout de suite il est souvent difficile de lui expliquer qu'on a rien de montrable pour le moment parce qu'on a passé la journée à coder des tests unitaires qui feront gagner beaucoup de temps plus tard ...
[^] # Re: Microbes
Posté par Philippe F (site web personnel) . Évalué à 4.
- quoi, ca ne marche toujours pas
- ben c'est que il y a quelques bugs compliques que j'ai du mal a regler
- mais je comprends pas, au bout d'un jour, ca marchait deja
- oui, mais c'etait pas fini, il y avait encore du travail plus difficile a faire
Alors que avec les tests unitaires, le depart est plus difficile, mais le finish est plus facile. Surotut quand au bout d'une semaine, il t'explique que tu n'as pas compris sa demande et qu'il faut tout changer. Avec tes tests unitaires, tu es zen.
Tu vois, meme ton patron serait content.
Sinon, pour mieux faire passer la pilule:
- il faut viser en priorite les fonctionnalites les plus utiles
- tu codes et tu testes en meme temps. Donc au bout d'une journee, tu as quand meme une partie du code qui est ecrite.
[^] # Re: Rangement du frigo Howto
Posté par durandal . Évalué à 2.
Mais même avec l'emballage, avec un peu plus d'efforts, j'arrive généralement à récupérer un yaourt du frigo avec une *et une seule* main. En effet, j'arrive à détacher le yaourt choisi du reste du paquet et également au cas où ils arrivent par deux de les séparer d'un mouvement souple du poignet tout en envoyant le second à sa place dans le frigo.
De plus, le vrai fainéant que je suis sort du frigo tout ce dont il a besoin au début du repas pour économiser quelques trajets table-frigo (au moins... 1m !).
Dans le même registre, il est possible pour le fainéant ultime de plier ses chaussettes de telle façon qu'elles soient déjà prêtes à accueillir le pied avec un effort minimal (en partie retroussées).
Est-ce que quelqu'un connait d'autres procédures d'optimisation de la vie quotidienne ? ;)
[^] # Re: Rangement du frigo Howto
Posté par Philippe F (site web personnel) . Évalué à 4.
[^] # Re: Rangement du frigo Howto
Posté par Ju. . Évalué à 3.
Je le connais le coup du 'une seule main' dans le frigo, une assiette chaude dans l'autre (oui c'est sur autant faire un voyage, pour prendre le beurre et le yaourt) seulement des fois le pot qu'on veut pas prendre accroché à celui qu'on veut, se casse ---> une heure de perdue à nettoyer le frigo et les denrées des etages du dessous*, l'angoisse....
* Note : si vous avez un petit frigo, mieux vaut mettre les yaourts en bas il y a moins de chances que le haut des yaourts soit un peu gelé.
[^] # gcc -msse2 activites_quotidiennes.c && ./a.out
Posté par bobert . Évalué à 6.
Que oui. L'homme étant monotâche par essence, toute occasion d'effectuer en même temps plusieurs choses, c'est quelques secondes de vie en plus, c'est une petite victoire sur la fatalité !
Exemple: faire pipi en se brossant les dents.
- time ( brossage && pipi ) : 1min + 30 s = 1min30
- time ( parallel ( brossage, pipi ) ) : 1 min
soit 30s de gagnées par jour !
Mais l'exemple ultime, c'est: faire du vélo en écoutant de la musique pour se rendre à son lieu de travail. Là on fait en même temps:
- une activité sportive
- un trajet
- loisir / détente / culture
Ultime, je vous dis... (en plus quand il pleut on prend sa douche au même moment... et là on touche au cosmique)
[^] # Re: gcc -msse2 activites_quotidiennes.c && ./a.out
Posté par tinodeleste . Évalué à 1.
quoiqu'il y a pire, le vélo sur la neige...
[^] # Re: gcc -msse2 activites_quotidiennes.c && ./a.out
Posté par durandal . Évalué à 1.
- time ( brossage && pipi ) : 1min + 30 s = 1min30
- time ( parallel ( brossage, pipi ) ) : 1 min
soit 30s de gagnées par jour !
Pour gagner un peu plus de temps, tu peux aussi te brosser les dents avec ton pipi. ;) Dans le temps on se faisait des bains de bouche à l'urine (http://www.bium.univ-paris5.fr/sfhad/vol5/art02/corps.htm(...)), l'urine espagnole ayant la propriété de blanchir les dents.
Enfin je le ferais pas moi... ;)
[^] # Re: Rangement du frigo Howto
Posté par dromadaire35 . Évalué à 1.
Ne pas plier ses chaussettes, tout simplement.
[^] # Re: Rangement du frigo Howto
Posté par durandal . Évalué à 1.
# bof
Posté par TImaniac (site web personnel) . Évalué à 4.
sur le fond je suis d'accord :)
[^] # Re: bof
Posté par NDT_69 . Évalué à 3.
# Un peu de philo, peut-être?
Posté par esdeem . Évalué à 4.
Epicure!
Ce n'est pas si éloigné que ça de ta réflexion.
Je te déconseille l'original, c'est indigeste, mais une traduction devrait passer.
Tout ceci se resume en quelques mots:
Préfère toujours un bien, mais:
1) Ne choisis jamais un bien qui t'apportera un mal plus grand.
2) Préfère un petit mal qui t'apporteras un bien plus grand!
Ca a l'air simple, mais c'est passablement retors. Et ca occupe!
Si tu fais le parallèle, le vrai fénéant est un type occupé! (à trouver un meilleur moyen pour ne rien faire.) QED!
0. Assume good faith 1. Be kind to other people 2. Express yourself 4. Apply rule 0
# Faineant
Posté par tiot (site web personnel) . Évalué à 3.
Toi tu dois être dans le "j'en fais le moins possible" lui est plutôt "remets à après demain ce que tu peux remettre à demain".
C'est complètement différent. Toi tu vis dans le présent et l'avenir, lui que dans le présent.
[^] # Re: Faineant
Posté par esdeem . Évalué à 0.
Le faineant amateur va simplement mettre les yaourts au frigo, mais le vrai faineant va enlever l'emballage car il sait que celui-ci le fatiguera plus tard.
et je me dis:
1) il remet à tout de suite ce qui l'emmerdera demain
2) que s'il vit pour le présent, il songe aussi à l'avenir.
0. Assume good faith 1. Be kind to other people 2. Express yourself 4. Apply rule 0
[^] # Re: Faineant
Posté par totof2000 . Évalué à 3.
"remets à après demain ce que tu peux remettre à demain".
Ca s'appelle la procrastination :)
# assertions préconditions
Posté par free2.org . Évalué à 3.
[^] # Re: assertions préconditions
Posté par Philippe F (site web personnel) . Évalué à 2.
Les tests unitaires te permettent de valider en permence que ton programme fait ce qu'il doit faire, correctement.
[^] # Re: assertions préconditions, postconditions
Posté par free2.org . Évalué à 2.
il faut les 2 !
car un test unitaire ne peut pas toujours tester tous les parametres possibles (il peut y avoir trop de combinaisons) d'où la nécessité des postconditions, et un test unitaire ne t'indique pas où est effectué un appel avec des paramètres idiots, d'où l'intéret des préconditions
si tu as de bonnes postconditions dans une fonction, alors tes tests unitaires peuvent se résumer à essayer le maximums de parametres en appelant cette fonction, l'essentiel du travail de test étant fait par la postcondition
[^] # Re: assertions préconditions, postconditions
Posté par TImaniac (site web personnel) . Évalué à 2.
[^] # Re: assertions préconditions, postconditions
Posté par free2.org . Évalué à 2.
On dit la même chose !
[^] # Re: assertions préconditions, postconditions
Posté par TImaniac (site web personnel) . Évalué à 2.
[^] # Re: assertions préconditions, postconditions
Posté par free2.org . Évalué à 2.
(décideur imaginaire instantané, et pas seulement pour les erreurs)
avec postcondition, un terme de programmation par contrat
http://fr.wikipedia.org/wiki/Programmation_par_contrat(...)
(partie finale d'une fonction qui décide si le résultat est entaché d'erreur ou pas)
mais je conviens que ces 2 termes ont un point commun (ils retournent tous les 2 un booléen), et qu'il est tentant d'utiliser le terme Oracle quand on fait des tests unitaires sur des fonctions pour lesquelles on a pas écrit de postcondition (ce qui n'est pas une bonne habitude, car on ne peut pas toujours tester toutes les exécutions possibles avec un test unitaire, et la plateforme d'utilisation n'est jamais exactement la même que la plateforme de développement)
[^] # Re: assertions préconditions, postconditions
Posté par TImaniac (site web personnel) . Évalué à 2.
# comparatifs
Posté par Louis Nyffenegger . Évalué à 2.
En gros, les logiciels plantent, c'est pas grave donc on s'en souci moins que si c'est une machine de fabrication industrielle ou une voiture.
Mais bon, c'est juste une réflexion qui m'avait interpellée (en même temps le prof utilise Win***)
[^] # Re: comparatifs
Posté par EmmanuelP . Évalué à 5.
Ben oui bien sur, il n'a jamais eu de voiture, frigo, radio, television, mixer en panne, jamais entendu parler de bâtiment qui s'écroule, jamais eu affaire avec ces saletés de fil rouge autour des portions de creme de gruyere, jamais pesté contre ces bancs publics sur lesquels on ne peut pas s'allonger, jamais eu le cul congelé par les bancs en acier de la SNCF un jour d'hiver, jamais failli perdre la vie à l'échangeur de la mort porte de Bercy...
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.