Méthode pour tester si une variable est initialisée ? [JAVA] - Java - Programmation
Marsh Posté le 10-10-2002 à 21:11:34
J'y ai pensé mais ça me fait 3 if, je voudrais savoir si une méthode testant la présence existe ?
Marsh Posté le 10-10-2002 à 21:47:04
tu fais une gestion d'execption avec un try{ ton truc }
puis un
catch( nom de l'exception ) { le bordel si ton truc n'est pas initialisé }
ne me demande pas trop de détails, je suis un manche pour ce genre de trucs
ton exception sera "IndexOutOfBoundsExeption"
Marsh Posté le 10-10-2002 à 21:53:09
kfman a écrit a écrit : J'y ai pensé mais ça me fait 3 if, je voudrais savoir si une méthode testant la présence existe ? |
Mouais, enfin c'est franchement pas la mort de faire 3 if... Sinon passe par un switch ... case
Marsh Posté le 10-10-2002 à 22:03:18
SirJeannot a écrit a écrit : tu fais une gestion d'execption avec un try{ ton truc } puis un catch( nom de l'exception ) { le bordel si ton truc n'est pas initialisé } ne me demande pas trop de détails, je suis un manche pour ce genre de trucs ton exception sera "IndexOutOfBoundsExeption" |
ARGH
NE L'ECOUTEZ PAS
Marsh Posté le 10-10-2002 à 22:20:33
Tu fais 3 if et puis c'est tout !
Des oifs en voulant faire du "beau" code, tu perds en efficacité ...
Comment agir différemment en fonction de trois valeurs possibles ...
Y a pas à aller cherche bien loin, tu fais 3 if, ou un switch ... et c'est tout !!
Et surtout pas d'exception ...
l'utilisation des exceptions doit rester exceptionnelle
Marsh Posté le 10-10-2002 à 22:30:05
bobuse a écrit a écrit : Tu fais 3 if et puis c'est tout ! Des oifs en voulant faire du "beau" code, tu perds en efficacité ... Comment agir différemment en fonction de trois valeurs possibles ... Y a pas à aller cherche bien loin, tu fais 3 if, ou un switch ... et c'est tout !! Et surtout pas d'exception ... l'utilisation des exceptions doit rester exceptionnelle |
Oui papa
Mais pour ma culture générale, j'aimerai qd même savoir si la méthode existe
Marsh Posté le 10-10-2002 à 22:35:15
J'ai du mal à voir l'utilité d'une telle fonction ...
sinon, ce que tu peux faire, c'est faire un constructeur qui prend en paramètre ton tableau de paramètres ...
Marsh Posté le 10-10-2002 à 22:46:38
bobuse a écrit a écrit : J'ai du mal à voir l'utilité d'une telle fonction ... sinon, ce que tu peux faire, c'est faire un constructeur qui prend en paramètre ton tableau de paramètres ... |
En fait, je veux envoyer le paramètre seulement s'il existe... ou ne rien envoyez sinon.
Marsh Posté le 11-10-2002 à 00:09:58
kfman a écrit a écrit : En fait, je veux envoyer le paramètre seulement s'il existe... ou ne rien envoyez sinon. |
non ca n'existe pas. Et c'est pas plus mal !
Marsh Posté le 11-10-2002 à 00:13:09
SirJeannot a écrit a écrit : |
c'est quoi cet histoire ???
Tu trouves ca intelligent de répondre des conneries aux gens ? Ca n'a vraiment rien de drôle et ca va à l'encontre du but du forum.
le prochain coup tu t'abstient de poster !
Marsh Posté le 11-10-2002 à 01:01:59
benou a écrit a écrit : c'est quoi cet histoire ??? Tu trouves ca intelligent de répondre des conneries aux gens ? Ca n'a vraiment rien de drôle et ca va à l'encontre du but du forum. le prochain coup tu t'abstient de poster ! |
moi je mdemande s'il etait pas serieux
y'a des gens qui font vraiment ça si si
Marsh Posté le 11-10-2002 à 09:24:07
benou a écrit a écrit : c'est quoi cet histoire ??? Tu trouves ca intelligent de répondre des conneries aux gens ? Ca n'a vraiment rien de drôle et ca va à l'encontre du but du forum. le prochain coup tu t'abstient de poster ! |
je fais comme ca aussi
edit: en général, j'initialise la variable avant de l'utiliser , pour voir si elle a été modifié par autre chose
Marsh Posté le 11-10-2002 à 09:24:35
SirJeannot a écrit a écrit : je fais comme ca aussi |
Marsh Posté le 11-10-2002 à 09:27:04
--greg-- a écrit a écrit : |
mais chui un pied sur ce que j'ai dit, mais c'est une idée qui me venait...
ceci dit je préfère mon bidouillage
Marsh Posté le 11-10-2002 à 09:32:45
SirJeannot a écrit a écrit : mais chui un pied sur ce que j'ai dit, mais c'est une idée qui me venait... ceci dit je préfère mon bidouillage |
Marsh Posté le 11-10-2002 à 09:34:40
--greg-- a écrit a écrit : |
je parlais de celle là
edit: en général, j'initialise la variable avant de l'utiliser , pour voir si elle a été modifié par autre chose
ceci dit, mis à part à gestion d'erreur, je ne voyais pas autre chose , dsl
Marsh Posté le 11-10-2002 à 09:38:31
benou a écrit a écrit : ouais ... ca fait peur ! |
dsl, je ne suis pas un maitre en java non plus
ceci dit j'aurai trouvé nimporte quel moyen pour ne pas utiliser les exceptions
Marsh Posté le 11-10-2002 à 10:31:19
--greg-- a écrit a écrit : ARGH NE L'ECOUTEZ PAS |
Mouais et bien moi je dirais qu'il a tout a fait raison (dans l'absolu) si tu estimes que le cas ou la variable n'est pas initialisee est rare et que tu cherches a gagner en efficacite en evitant certains traitements : c'est une approche optimiste du probleme.
La gestion de l'exception est lourde oui, mais vu qu'elle arrive rarement on prefere s'eviter un tas de ifs (meme 3 s'ils sont executes plusieurs dizaines de milliers de fois) inutiles la pluspart du temps.
Enfin bon la on retombe dans l'optimisation.
Sinon : je ferais egalement ces 3 if...
Marsh Posté le 11-10-2002 à 10:39:38
bobuse a écrit a écrit : l'utilisation des exceptions doit rester exceptionnelle |
Non : elles doivent etre utilisees a bon escient et il faut pouvoir justifier leur utilisation.
La seule chose qu'il faut savoir est qu'une exception generee signifie qu'une usine a gaz se met en route. Si l'on n'y fait pas attention les performances chuttent etc...
La programmation par exceptions est extremement utile et permet de gagner en efficacite, ainsi que de simplifier certains problemes dans des cas bien precis.
Sans rester de le cas precis qui nous interesse, je trouve que les developpeurs en general on tendance a ne pas assez utiliser des exceptions "fait maison" pour regler leurs problemes.
Mais ca c'est comme le reste : IMHO
Marsh Posté le 11-10-2002 à 11:42:38
phenixl a écrit a écrit : Mouais et bien moi je dirais qu'il a tout a fait raison (dans l'absolu) si tu estimes que le cas ou la variable n'est pas initialisee est rare et que tu cherches a gagner en efficacite en evitant certains traitements : c'est une approche optimiste du probleme. |
Les exceptions sont pas faites pour améliorer les perfs !
les utiliser dans ce but est une abération !
Marsh Posté le 11-10-2002 à 11:53:24
Pourtant, les spécialistes te confirmeront que le code :
Code :
|
est moins rapide que :
Code :
|
edit> Ce n'est pas que je tienne absolument à être désagréable, mais "[i]aberration" s'écrit avec deux 'r'...
Marsh Posté le 11-10-2002 à 12:01:59
Cependant, benou, je suis d'accord qu'utiliser une exception pour sortir d'une boucle, c'est franchement sale. Par contre, cela peut être bon à savoir pour détecter les tests inutiles. Du genre :
Code :
|
Ici, le test sur l'index est probablement inutile, surtout si la probabilité d'erreur est vraiment faible (vous remarquerez que la méthode n'est pas publique). Il est sans doute préférable d'écrire :
Code :
|
Marsh Posté le 11-10-2002 à 13:21:04
Ha bon ? T'as des sources ?
Et c'est valables qqsoit i ? ... bizarre quand même !
Marsh Posté le 11-10-2002 à 13:42:32
bobuse a écrit a écrit : Ha bon ? T'as des sources ? Et c'est valables qqsoit i ? ... bizarre quand même ! |
oui et non. Y a un test en moins à chaque itération. Ca peut etre non négligeables si i est grand.
Marsh Posté le 11-10-2002 à 14:04:33
DarkLord> Rien à ajouter.
bobuse> Tu remarqueras que le nombre d'itérations dans mes 2 bouts de code était 100 000 (cent mille).
Marsh Posté le 11-10-2002 à 14:38:53
BifaceMcLeOD a écrit a écrit : Pourtant, les spécialistes te confirmeront que le code :
est moins rapide que :
|
Hum...
Il me semble que tu ne comprends pas ce que j'ai ecris...
Si tu as un array de 10000 objets et qu'une fois sur 100000 une case n'est pas initialisee et tu te choppes un NullPointerException je t'assure que tu as meilleurs temps de catch l'exception plutot que faire des if (tab[i] != null)
Enfin bon...
Edit : j'ai lu tes msg suivants et on parle bien de la meme chose ou presque dsl.
Marsh Posté le 11-10-2002 à 14:45:51
benou a écrit a écrit : Les exceptions sont pas faites pour améliorer les perfs ! les utiliser dans ce but est une abération ! |
Dire que les exceptions doivent etre utilisees exceptionnellement ca c'est une abberation ! Elles doivent etre utilisees intensement mais lorsque c'est justifie.
Ce n'est pas l'utilisation qui doit etre exceptionnelle, mais la levee d'exceptions !
Si tu utilises Exceptions + polymorphisme je t'assure que tu gagnes en performances, en lisibilite de code, etc... compare a une batterie de tests lourde et executee a chaque fois.
Bien sur derriere il faut faire en sorte que l'exception ne soit levee qu'exceptionnellement, mais ca c'est une question de design !
Marsh Posté le 11-10-2002 à 20:13:12
BifaceMcLeOD a écrit a écrit : DarkLord> Rien à ajouter. bobuse> Tu remarqueras que le nombre d'itérations dans mes 2 bouts de code était 100 000 (cent mille). |
ha ok j'avais point le 100 000 !
phenixl a écrit a écrit : Dire que les exceptions doivent etre utilisees exceptionnellement ca c'est une abberation ! Elles doivent etre utilisees intensement mais lorsque c'est justifie. Ce n'est pas l'utilisation qui doit etre exceptionnelle, mais la levee d'exceptions ! Si tu utilises Exceptions + polymorphisme je t'assure que tu gagnes en performances, en lisibilite de code, etc... compare a une batterie de tests lourde et executee a chaque fois. Bien sur derriere il faut faire en sorte que l'exception ne soit levee qu'exceptionnellement, mais ca c'est une question de design ! |
Ok ok, tout à fait d'accord sur ce point !
En fait, je voulais juste dire qu'il faut pas en mettre n'importe où, et les utiliser à tout vent (ce que tu as dit justement). Mais bon, ma phrase aura au moins suscité le débat ... c'est toujours positif
Marsh Posté le 11-10-2002 à 22:25:16
phenixl a écrit a écrit : Dire que les exceptions doivent etre utilisees exceptionnellement ca c'est une abberation ! |
j'ai jamais dis ca !
Marsh Posté le 11-10-2002 à 22:33:50
benou a écrit a écrit : j'ai jamais dis ca ! |
PAS TOI !
J'ai reagi sur le terme "abberation" : ce que je dis est moins une abberation que ce qu'a dit bobuse (oui m'sieur ! euh d'accord m'sieur la prochaine fois je ne denoncerai pas un petit camarade )
D'ailleurs Bobuse m'a compris
Marsh Posté le 10-10-2002 à 20:58:39
Bonjour,
Je suis en train d'écrire un petit prog Java où j'utilise les arguments args[].
Voici le début:
public class Test {
public static void main (String args[]) {
Infos Uneinfo = new Infos(args[0],Integer.parseInt[args[1]);
...
Dans la classe Infos, j'ai écris 3 constructeurs selon le nombres d'arguments passés.
public class Infos {
public Infos() {...}
public Infos(String Nomville) {...}
public Infos(String Nomville, Int Habitant) {...}
...
A l'éxecution, je me prends une ArrayIndexOutOfBoundException.
Ce qui me parait logique vu que je tente d'utiliser des variables qui sont dans certains cas non initialisées.
Je voudrais donc savoir s'il existe une méthode permettant de renvoyer l'argument s'il existe ou rien dans la cas contraire, dy style:
Infos Uneinfo = new Infos(args[0].ifExist(),Integer.parseInt[args[1]);
Merci d'avance...
---------------
"Nous allons reformater les français" © Nicolas Sarkozy