Что является более эффективным?

У меня есть вопрос об эффективности приложения, если я применяю вложенные if или if-else if в коде:

Мы должны заполнить String, и есть 3 случая:

  • boolean, чтобы увидеть, заполняем ли мы String или нет
  • int языковым кодом для заполнения String

Какие из Являются ли эти фрагменты более эффективными ?:

вложенные ifs

String cantidadAproximada = "";
if (contrato.isAproximado()) {
    if (contrato.getIdioma().getId() == DBConstantsHelper.ID_IDIOMA_FR)
        cantidadAproximada = " Approx.";
    else
        cantidadAproximada = " Aprox.";
}

if-else-if

String cantidadAproximada = "";
if (contrato.isAproximado() && contrato.getIdioma().getId() == DBConstantsHelper.ID_IDIOMA_FR) {
    cantidadAproximada = " Approx.";
else if (contrato.isAproximado() && contrato.getIdioma().getId() == DBConstantsHelper.ID_IDIOMA_FR) {
    cantidadAproximada = " Aprox.";
}

Мое мнение таково, что первый вариант более эффективен и удобочитаем, поскольку в случае false он не выполняет вторую оценку и больше похож на мою логику мышления.

Я также понимаю, что только в этом случае я не буду повышать эффективность приложения, но это вопрос, который возник, и я хочу быть последовательным и соответствующим образом кодировать в зависимости от ответа.

0
задан 10.03.2016, 12:43
2 ответа

Оба равны работоспособных , так как нет циклов и следовательно ejecutarÃ: n в постоянном времени (кроме того, что какой-то из вызовов не был постоянным). Первый двух случаев вероятно был mÃ: s rÃ: я прошу (что не работоспособный), так как реализует única раз призывы к функциям, чтобы получать стоимость, из-за которой ты спрашиваешь; чтобы быть уверены, очевидно, habr¦ - во что измерять времена.

Однако, ничто из этого не является значимым . В этом типе c¦digo deber¦-схвати выбирать opci¦n mÃ: s читабельный и mÃ: s mantenible , вместо того, чтобы одержимо типами микро-оптимизации в c¦digo, что будут выполнять мало. S¦lo, если в будущем ты обнаруживаешь, что это método шея бутылки cabr¦,, - который быть должен анализировать это, чтобы это оптимизировать.

Pregúntate, итак, вместо cuÃ: l двух он mÃ: s rÃ: я прошу, Â: cuÃ: l двух adaptarÃ: лучше в изменения в обязательных условиях (p.ej.: новые языки)? Â: ты можешь находить третий, кто приспосабливал бы todav¦ - к лучше в изменения?

7
ответ дан 24.11.2019, 14:45
  • 1
    но есть различие эффективности, одинокий первый делает comprobació n и во втором будь должен реализовывать два. и один менее, чем два, а именно má s работоспособный mé каждый 1, если не выполняется первое. – Webserveis 05.04.2016, 12:56
  • 2
    @Webserveis 1 и 2 - оба O(1), из-за которого в té rminos эффективность они idé nticos. В моем ответе ты можешь читать, что действительно первый - má s rá я прошу , так как он выполняет меньше операций, но снова, неуместный до тех пор, пока не докажут, что есть проблема результата . – Darkhogg 05.04.2016, 13:18

Мне кажется ответ @Darkhogg больше, что преуспевшая, он хотел добавить, что читабельность también зависит от codificaci¦n, хотя вторая - больше dif¦-cil поддержания, если refactoriza quedar¦ - в большее количество fÃ: cil, например:

String cantidadAproximada = "";
bool isAproximado = contrato.isAproximado();
String idIdioma = contrato.getIdioma().getId();
if (isAproximado && idIdioma == DBConstantsHelper.ID_IDIOMA_FR) {
    cantidadAproximada = " Approx.";
else if (isAproximado && idIdioma == DBConstantsHelper.ID_IDIOMA_FR) {
    cantidadAproximada = " Aprox.";
}
1
ответ дан 24.11.2019, 14:45
  • 1
    Всегда я слушал, что переключатель - má s работоспособный, что if, потому что он работает с подмостками разрывов (jump table), в твой ответ я он pondrí в переключатель, вместо if, else-if. – dddenis 05.04.2016, 12:45
  • 2
    ответом более руководили, в который podí в refactorizar, но очень хороший твой вклад – phipex 06.04.2016, 23:19