Вопрос

Я работаю над минимизацией и улучшением кода. Мой вопрос: возможно, можно ли поменять указаниями, если выше, не разрушая логику кода?

    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 )

Поскольку между оба, если статусы не являются операциями, которые пишут переменные, я бы сказал, да, но я не уверен.

Есть идеи?

Это было полезно?

Решение

Я не вижу, почему вы хотите (c2 - c1 == 0) вместо c1 == c2

Почему бы не идти

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

или

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

маршрут

Как отмечают, не существует штрафа или преимущество при переключении C1 для C2 в любом месте. Из приведенного выше, вставив наиболее вероятно, чтобы извлечь состояние сначала немного более эффективно, потому что второе условие не будет оценено, если первый выходит из строя.

Также отметьте, это микро оптимизация, вы никогда не должны рассматриваться для скорости.

В-третьих примечание, если ваша программа ничего не делает, и выходит, если это условие не будет держать, и вы действительно хотите микро-оптимизировать (что вы не делаете), я предлагаю не разбирать аргументы, прежде чем вы узнаете, что они нужный. Если C1 будет неравным в C2 большую часть времени, то вы можете подождать с разбором C3, пока вы не знаете, что вы должны проверить его. Это строго теория. Не делайте этого на практике, так как он сделает ваш код, намного сложнее читать. Намного яснее обрабатывать всю командную строку VARS к чему-то разумному, как только сможешь.

Другие советы

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

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

да. Вы также можете написать if ((c2-c1==0) && (c1 != c3)).

Если ты имеешь ввиду

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

и вы не планируете делать что-то особенное, только если c2-c1==0 тогда да.

Если нет никаких блоков, то я предлагаю вам написать как:

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

или, если вы хотите их поменять,

if (c1 != c3 && c2-c1==0)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top