64K действительно не имеет никакого смысла в современную эпоху с приложениями с большим количеством функций, продвинутой и сложной архитектурой, большими библиотеками (попробуйте полный набор сервисов Google Play) и упомянутыми библиотеками, которые генерируют код для нам нравится то, что может делать библиотека DI, такая как Dagger, исполняемый файл Dalvik имеет ограничение в 64 КБ, потому что он предназначен для ограничения на число методов, на которые можно ссылаться, но не определенных , поэтому мы выбираем мультидексирование по умолчанию я бы сказал, что все варианты отладки приложения должны иметь мультидексирование, потому что без усечения, сжатия и удаления всего ненужного proguard мы в конечном итоге достигнем предела в 64 КБ, но довольно часто при создании варианта выпуска мы можем и вполне можем остаться под предел 64К.
Так что по вашему вопросу любое приложение, которое пересекает ограничение в 64 КБ даже после того, как proguard должен быть мультидексированным, независимо от того, модно оно или нет.
Они довольно подобны, но у каждого есть несколько специальных функций.
переключатель
switch
обычно более компактно, чем много вложенных if else
и поэтому, более читаемыйbreak
между двумя случаями переключателя можно упасть до следующего случая во многих подобных языкам C. С if else
Вам был бы нужен a goto
(который не очень хорош Вашим читателям..., если язык поддерживает goto
вообще).switch
только принимает типы примитивов, столь же ключевые и константы как случаи. Это означает, что может быть оптимизировано компилятором с помощью таблицы переходов, которая очень быстра.Не действительно ясно, как отформатировать switch
правильно. Семантически, случаи являются целями перехода (как маркировки для goto
) который должен быть выравниванием по левой границе. Вещи ухудшаются, когда у Вас есть фигурные скобки:
case XXX: {
} break;
Или фигурные скобки должны войти в собственные строки? Если закрывающая фигурная скобка идет позади break
? Как нечитабельный, который был бы? и т.д.
switch
только принимает только некоторые типы данных.если еще
if
позволяет сложные выражения в условии, в то время как переключатель хочет константуbreak
между if
s, но можно забыть else
(особенно во время cut'n'paste)Я думаю, что основное отличие состоит в том, что в блоках if-else мы можем проверять условия. Но в switch
все происходит по-другому.