Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4644 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  assert : ca vous cause

 


le mot-clé assert :




Attention si vous cliquez sur "voir les résultats" vous ne pourrez plus voter

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

assert : ca vous cause

n°413127
bobuse
Posté le 02-06-2003 à 15:12:11  profilanswer
 

Je viens de decouvrir ca dans un article sur developpezz.com :  source
 
Je savais que le concept existait, mais je pensais pas que ca existait.
J'aimerai donc savoir si je suis a la masse, ou c'est normal, et puis ca fait un sondage, c'est marrant ...
 
A priori, ca me parait pas mal, ca permet de securiser le code, surtout quand on retouche/reutilise du code apres plusieurs semaines ...


---------------
get amaroK plugin
mood
Publicité
Posté le 02-06-2003 à 15:12:11  profilanswer
 

n°413136
kadreg
profil: Utilisateur
Posté le 02-06-2003 à 15:15:30  profilanswer
 

C'est une nouveauté du JDK 1.4
 
Et ça roulaize, perso, je fait mes precond/postcond/invariants avec ça  :love:


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°413142
lorill
Posté le 02-06-2003 à 15:17:11  profilanswer
 

kadreg a écrit :


Et ça roulaize, perso, je fait mes precond/postcond/invariants avec ça  :love:  


moi je m'en sers pas, les composants deviendraient beaucoup trop prévisibles... Où est la poésie dans tout ca, hein ?

n°413171
El_gringo
Posté le 02-06-2003 à 15:26:25  profilanswer
 

Moi je n'arrive pas à en saisir l'intéret !  :sweat:  
Quel effet ça fait à l'utilisation si la condition d'un assert n'est pas "vraie" ?
Pourquoi utliser de assert plutôt que des exceptions ?

n°413175
backdafuck​up
Back to da old skool
Posté le 02-06-2003 à 15:28:55  profilanswer
 

c'est quoi assert ?

n°413177
skeye
Posté le 02-06-2003 à 15:29:41  profilanswer
 

backdafuckup a écrit :

c'est quoi assert ?


Lien dans le 1er post... :ange:

n°413183
skeye
Posté le 02-06-2003 à 15:31:10  profilanswer
 

El_gringo a écrit :

Moi je n'arrive pas à en saisir l'intéret !  :sweat:  
Quel effet ça fait à l'utilisation si la condition d'un assert n'est pas "vraie" ?
Pourquoi utliser de assert plutôt que des exceptions ?


Si c'est comme en C ca te sort un joli "assertion failed", avec le code correspondant!
Par contre je vois pas pkoi ne pas utiliser des exceptions, en effet...:??:

n°413201
nraynaud
lol
Posté le 02-06-2003 à 15:38:57  profilanswer
 

skeye a écrit :


Si c'est comme en C ca te sort un joli "assertion failed", avec le code correspondant!
Par contre je vois pas pkoi ne pas utiliser des exceptions, en effet...:??:


La réponse est sur le site de sun.
 
Quand tu élimines l'assert, tu vires tout le code de l'exécution, alors qu'avec une exception, tu dois faire le test à chaque fois.
 
Imagine une précondition sur le type des éléments d'une collection, la complexité a légèrement tendance à baisser quand tu vires l'assert.
 
 
À noter que toute la programmation par contrats est décrite dans le Meyer (Conception et programmation orientées object) que vous auriez du tous lire avant de poster.

n°413202
kadreg
profil: Utilisateur
Posté le 02-06-2003 à 15:39:57  profilanswer
 

nraynaud a écrit :


À noter que toute la programmation par contrats est décrite dans le Meyer (Conception et programmation orientées object) que vous auriez du tous lire avant de poster.


 
Je l'ai lu :o


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°413208
bobuse
Posté le 02-06-2003 à 15:43:30  profilanswer
 

nraynaud a écrit :


 
À noter que toute la programmation par contrats est décrite dans le Meyer (Conception et programmation orientées object) que vous auriez du tous lire avant de poster.


 :ange:  
 
kestu veux [:spamafote] on est des artisans, on a du mal avec les bouquins :D


---------------
get amaroK plugin
mood
Publicité
Posté le 02-06-2003 à 15:43:30  profilanswer
 

n°413209
El_gringo
Posté le 02-06-2003 à 15:43:31  profilanswer
 

nraynaud a écrit :


La réponse est sur le site de sun.
 
Quand tu élimines l'assert, tu vires tout le code de l'exécution, alors qu'avec une exception, tu dois faire le test à chaque fois.
 
Imagine une précondition sur le type des éléments d'une collection, la complexité a légèrement tendance à baisser quand tu vires l'assert.
 
 
À noter que toute la programmation par contrats est décrite dans le Meyer (Conception et programmation orientées object) que vous auriez du tous lire avant de poster.


 
Si tout le monde attendait de connaitre sur le bout des doigts un sujet avant de poster, l'intérêt du forum ne serait plus du tout le même.
J'ai pas compris ce que t'as expliqué sur l'intéret d'un assertion par rapport à une exception.

n°413213
nraynaud
lol
Posté le 02-06-2003 à 15:47:56  profilanswer
 

El_gringo a écrit :


J'ai pas compris ce que t'as expliqué sur l'intéret d'un assertion par rapport à une exception.


Désactiver du code de contrôle quand tu es en prod.

n°413223
El_gringo
Posté le 02-06-2003 à 15:52:57  profilanswer
 

nraynaud a écrit :


Désactiver du code de contrôle quand tu es en prod.


 
Ha, ok. En prod, le JVM doit être lancée de manière à ne pas utiliser assertions.
D'un autre côté, c'est bien pratique d'utiliser des exception, que l'on logue, même en prod. ça permet de localiser les bugs facilement!
 
EDIT : et puis désactiver ces contrôles en prod, je n'en voit pas l'intéret, puisque, à ce que j'ai compris, on ne doit mettre en assert que ce qui est essentiel au fonctionnement du programme. Si on désactive ces contrôles, qu'est ce qui se passe s'la condition n'est pas respectée !? il faut doubler chaque assert d'une exception alors !?


Message édité par El_gringo le 02-06-2003 à 15:54:51
n°413240
nraynaud
lol
Posté le 02-06-2003 à 16:07:01  profilanswer
 

El_gringo a écrit :


EDIT : et puis désactiver ces contrôles en prod, je n'en voit pas l'intéret, puisque, à ce que j'ai compris, on ne doit mettre en assert que ce qui est essentiel au fonctionnement du programme. Si on désactive ces contrôles, qu'est ce qui se passe s'la condition n'est pas respectée !? il faut doubler chaque assert d'une exception alors !?


Tout est écrit sur le site de sun et dans le Meyer (et surement dans des dizaines d'autres bouquins), y compris les pièges à con et les cas d'école. Je te rassures, lire un bouquin ne fera pas de toi un expert mais contribuera à t'améliorer.
 
http://java.sun.com/j2se/1.4.1/doc [...] ssert.html
 
plus spécifiquement : si c'est désactivé c'est qu'il va rien se passer même s'il y a un bug, tu vas aller au tas plus tard.
Non, si tu veux que ça se lève en proc aussi, tu mets une exception, pas une assertion.


Message édité par nraynaud le 02-06-2003 à 16:07:58
n°413249
Cherrytree
cn=?
Posté le 02-06-2003 à 16:14:11  profilanswer
 

La solution est dans le livre de Meyer [:totozzz] [:taichetoz] [:drasche].


---------------
Le site de ma maman
n°413258
El_gringo
Posté le 02-06-2003 à 16:17:17  profilanswer
 

nraynaud a écrit :


Tout est écrit sur le site de sun et dans le Meyer (et surement dans des dizaines d'autres bouquins), y compris les pièges à con et les cas d'école. Je te rassures, lire un bouquin ne fera pas de toi un expert mais contribuera à t'améliorer.
 
http://java.sun.com/j2se/1.4.1/doc [...] ssert.html
 
plus spécifiquement : si c'est désactivé c'est qu'il va rien se passer même s'il y a un bug, tu vas aller au tas plus tard.
Non, si tu veux que ça se lève en proc aussi, tu mets une exception, pas une assertion.


 
ça va, je m'inquiétais pas trop...
 
Mais par exemple, dans ce code :

Code :
  1. /**
  2.      * Vérification de l'égalité de deux intervalles.<p>
  3.      * Vérifie que les deux intervalles soient bien équivalents en comparant simplement
  4.      * la date de début et la date de fin.
  5.      * @return vrai, si les deux intervalles sont équivalents.
  6.      */
  7.     public boolean equals(java.lang.Object obj) {
  8.         if (null == obj) { // rien à comparer
  9.             return false;
  10.         }
  11.         if ( ! (obj instanceof DateIntervalle)) { // pas le bon type d'objet
  12.             return false;
  13.         }
  14.         DateIntervalle intervalle = (DateIntervalle) obj;
  15.         assert null != getBeginAt();
  16.         assert null != getEndAt();
  17.         return getBeginAt().equals(intervalle.getBeginAt()) && getEndAt().equals(intervalle.getEndAt());
  18.     }

 
 
Si les assertions sont ignorées par le JVM courante, l'utilisateur peut va se prendre un NullPointerException
Je ne vois pas ce qu'apporte l'assertion au développeur...

n°413318
nraynaud
lol
Posté le 02-06-2003 à 17:03:28  profilanswer
 

El_gringo a écrit :


Mais par exemple, dans ce code :

Code :
  1. assert null != getBeginAt();
  2.         assert null != getEndAt();
  3.         return getBeginAt().equals(intervalle.getBeginAt()) && getEndAt().equals(intervalle.getEndAt());

 
Je ne vois pas ce qu'apporte l'assertion au développeur...


moi non plus, si son invariant de classe est en vrac c'est sûrement pas là qu'il faut le détecter, c'est beaucoup trop tard.
T'as l'auteur du code sous la main ? C'est un mec suceptible d'avoir une bonne raison de faire ça ?
 
Par contre, dans les cas où ça risque de pêter 3 heures après le bug c'est utile de mettre une assertion car chercher pourquoi une valeur erronée est là où elle se trouve peut être assez long.
 
 
PS : j'ai eu une réunion au milieu du post, je suis pas sur que ce soit très clair.

n°413376
El_gringo
Posté le 02-06-2003 à 17:27:38  profilanswer
 

nraynaud a écrit :


moi non plus, si son invariant de classe est en vrac c'est sûrement pas là qu'il faut le détecter, c'est beaucoup trop tard.
T'as l'auteur du code sous la main ? C'est un mec suceptible d'avoir une bonne raison de faire ça ?
 
Par contre, dans les cas où ça risque de pêter 3 heures après le bug c'est utile de mettre une assertion car chercher pourquoi une valeur erronée est là où elle se trouve peut être assez long.
 
 
PS : j'ai eu une réunion au milieu du post, je suis pas sur que ce soit très clair.


 
L'auteur est celui du lien du 1er post !

n°413409
nraynaud
lol
Posté le 02-06-2003 à 17:52:16  profilanswer
 

El_gringo a écrit :


L'auteur est celui du lien du 1er post !


Je viens de lire c'est nul.
Le lien ver jcontractor est pas mal, je savais pas qu'il était aussi bien ce truc. Par contre je trouve ça lourd d'écrire 2 méthodes autour de chaque méthode.

n°413425
nraynaud
lol
Posté le 02-06-2003 à 18:04:25  profilanswer
 

Je viens de capter la blague :

Citation :


Sujet : assert : ca vous cause


Si ça cause, c'est pas bon signe ...

n°413432
bobuse
Posté le 02-06-2003 à 18:23:20  profilanswer
 

nraynaud a écrit :

Je viens de capter la blague :

Citation :


Sujet : assert : ca vous cause


Si ça cause, c'est pas bon signe ...

:??:  
 
En tout cas, merci pour tes quelques explications ... mais j'ai pas encore tout compris ... va falloir que je lise le bouquin de meyer ...


---------------
get amaroK plugin
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  assert : ca vous cause

 

Sujets relatifs
j'ai une erreur et je n'en trouve pas la cause ...Copier un fichier avec CopyFile --> erreur à cause du uses Windows
[Java] Session à null à cause d'un proxy[ Php/Oracle/Apache ] Plantage d'apache à cause des librairies oracle
IllegalStateException à cause d'une sendRedirectEst-ce que j'ai le droit... Synonyme pour "ASSERT"
UNIT CRT me cause un HORREUR .....vla encore une requete qui me cause un souci
Access; pb de création de graphique à partir d'une requête (cause sq) 
Plus de sujets relatifs à : assert : ca vous cause


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)