Optimisation de code imbrication boucle+condition
Bonjour, j'aimerais optimiser un code.
J'ai un pour chaque composant d'un ArrayList à faire un traitement mais avec des conditions différentes.
Voici en clair ce que à donne codé de 2 façon :
Code 1
avantage : Pas de redondance de code
inconvénient : Perte de temps lorsque la dimension de array est improtante...en effet, on fait la vérification de la valeur type a chaque passage de la boucle alors qu'une seule fois suffit
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
private void myFunction(int type){
for(i=0;i<array.length;i++){
if(bidule && bidule2){
switch(type){
case 0:if(a<=b){...};break;
case 1:if(a>=b){...};break;
case 2:if(a!=b){...};break;
case 3:if(a==b){...};break;
}
}
}
} |
Code 2
avantage : plus rapide lorsque la dimension de array est importante
inconvénient : redondance de code dans la boucle for
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
private void myFunction(int type){
switch(type){
case 0:{
for(i=0;i<array.length;i++){if(bidule && bidule2){if(a>=b){...}}}
;break;
}case 1:{
for(i=0;i<array.length;i++){if(bidule && bidule2){if(a<=b){...}}}
;break;
}case 2:{
for(i=0;i<array.length;i++){if(bidule && bidule2){if(a!=b){...}}}
;break;
}case 3:{
for(i=0;i<array.length;i++){if(bidule && bidule2){if(a==b){...}}}
;break;
}
}
} |
Auriez vous une autre solution pour optimiser le code ?
Pour l'instant j'ai opté pour la solution 2
Le must serait que je puisse faire un truc du genre :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
private void myFunction(int type){
Verificator ve;
switch(type){
case 0:ve='<=';break;
case 1:ve='>=';break;
case 2:ve='!=';break;
case 3:ve='==';break;
}
for(i=0;i<array.length;i++){
if(bidule && bidule2){
if(a ve b){...}
}
}
} |