Каково различие между ЕСЛИ ЕЩЕ и ПЕРЕКЛЮЧАТЕЛЬ?

64K действительно не имеет никакого смысла в современную эпоху с приложениями с большим количеством функций, продвинутой и сложной архитектурой, большими библиотеками (попробуйте полный набор сервисов Google Play) и упомянутыми библиотеками, которые генерируют код для нам нравится то, что может делать библиотека DI, такая как Dagger, исполняемый файл Dalvik имеет ограничение в 64 КБ, потому что он предназначен для ограничения на число методов, на которые можно ссылаться, но не определенных , поэтому мы выбираем мультидексирование по умолчанию я бы сказал, что все варианты отладки приложения должны иметь мультидексирование, потому что без усечения, сжатия и удаления всего ненужного proguard мы в конечном итоге достигнем предела в 64 КБ, но довольно часто при создании варианта выпуска мы можем и вполне можем остаться под предел 64К.

Так что по вашему вопросу любое приложение, которое пересекает ограничение в 64 КБ даже после того, как proguard должен быть мультидексированным, независимо от того, модно оно или нет.

27
задан tsilb 15 May 2010 в 03:00
поделиться

2 ответа

Они довольно подобны, но у каждого есть несколько специальных функций.

переключатель

  • switch обычно более компактно, чем много вложенных if else и поэтому, более читаемый
  • Если Вы опускаете break между двумя случаями переключателя можно упасть до следующего случая во многих подобных языкам C. С if else Вам был бы нужен a goto (который не очень хорош Вашим читателям..., если язык поддерживает goto вообще).
  • На большинстве языков, switch только принимает типы примитивов, столь же ключевые и константы как случаи. Это означает, что может быть оптимизировано компилятором с помощью таблицы переходов, которая очень быстра.
  • Не действительно ясно, как отформатировать switch правильно. Семантически, случаи являются целями перехода (как маркировки для goto) который должен быть выравниванием по левой границе. Вещи ухудшаются, когда у Вас есть фигурные скобки:

    case XXX: {
    } break;
    

    Или фигурные скобки должны войти в собственные строки? Если закрывающая фигурная скобка идет позади break? Как нечитабельный, который был бы? и т.д.

  • На многих языках, switch только принимает только некоторые типы данных.

если еще

  • if позволяет сложные выражения в условии, в то время как переключатель хочет константу
  • Вы не можете случайно забыть break между ifs, но можно забыть else (особенно во время cut'n'paste)
  • это принимает все типы данных.
35
ответ дан Aaron Digulla 28 November 2019 в 05:28
поделиться

Я думаю, что основное отличие состоит в том, что в блоках if-else мы можем проверять условия. Но в switch

все происходит по-другому.
-2
ответ дан 28 November 2019 в 05:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: