Question

Je travaille sur la réduction et l'amélioration du code. Ma question est: est-il possible d'échanger les déclarations ci-dessus si sans détruire la logique du code

    int c1 = Integer.parseInt(args[0]) ;
    int c2 = Integer.parseInt(args[1]) ;
    int c3 = Integer.parseInt(args[2]) ;

    if (c2-c1==0)
      if ( c1 != c3 )

Depuis entre les deux si statments sont pas des opérations qui écrivent les variables, je dirais que oui, mais je ne suis pas sûr.

Toutes les idées?

Était-ce utile?

La solution

Je ne vois vraiment pas pourquoi vous voulez (c2 - c1 == 0) au lieu de c1 == c2

pourquoi ne pas le

if ((c1 == c2) && (c1 != c3)){
  do_stuff();
}

ou

if ((c1 != c3) && (c1 == c2)){
  do_stuff();
}

itinéraire

Comme une note, il n'y a pas de pénalité ou un avantage dans la commutation c1 pour ne importe où c2. De ce qui précède, la mise ne sera pas évalué le plus susceptible d'échouer première condition est un peu plus efficace, parce que la deuxième condition si le premier échoue.

A noter également, ceci est une micro optimisation, vous ne devriez jamais être envisage pour la vitesse.

Troisième note, si votre programme ne fait rien d'autre, et sort si cette condition ne tient pas, et vous ne voulez vraiment micro-optimize (que vous ne le faites pas) je suggère de ne pas l'analyse des arguments avant savent qu'ils sont nécessaires. si c1 sera inégal à c2 la plupart du temps, vous pouvez attendre avec l'analyse syntaxique c3 jusqu'à ce que vous savez que vous devez vérifier contre elle. Ceci est strictement théorie. Ne pas le faire dans la pratique car il rendra votre code beaucoup plus difficile à lire. Il est beaucoup plus clair pour traiter tous les commandline VARS quelque chose de sensible dès que possible.

Autres conseils

int c1 = Integer.parseInt(args[0]) ;
int c2 = Integer.parseInt(args[1]) ;
int c3 = Integer.parseInt(args[2]) ;

if (c2 == c1 && c1 != c3 ) {
   ...
}

Oui. Vous pouvez également if ((c2-c1==0) && (c1 != c3)) écrire.

Si vous voulez dire

if ((c1 != c3) && (c2-c1==0))

et vous ne prévoyez pas de faire quelque chose de spécial ne se c2-c1==0 alors oui.

S'il n'y a pas d'autre blocs impliqués, alors je vous suggère d'écrire comme:

if (c2-c1==0 && c1 != c3 )

ou, si vous voulez les échanger,

if (c1 != c3 && c2-c1==0)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top