2010-09-01 3 views
6

Извинения, если это заканчивается тем, что глупый вопрос, но мне было просто интересно, почему это делается на шаге 9 Notepad Упражнение 1 учебник (http://developer.android.com/resources/tutorials/notepad/notepad-ex1.html) ...Android Блокнот Упражнение 1 учебник и Menu.FIRST

public static final int INSERT_ID = Menu.FIRST; 

... а затем INSERT_ID используется везде, вместо того, чтобы просто использовать Menu.FIRST, а не везде?

Я думал, что я не хочу создавать какие-либо новые переменные, если мне это не нужно, особенно когда они уже статичны.

Стоит ли создавать INSERT_ID?

+3

нет глупых вопросов! – Key

ответ

3

Потому что, если вы использовали Menu.First везде, то решили перенести эту опцию в меню, чтобы он больше не был первым элементом, который вам нужно будет обновить все ссылки. Таким образом, вам нужно только обновить его в одном месте, и более разумно названный INSERT_ID будет отражать изменения, которые вы сделали повсюду.

Что касается производительности при создании новых переменных: Да, создание переменной будет использовать (незначительное) количество процессорного времени, и, да, сохранение переменной будет использовать (незначительный) объем памяти, но вы должны никогда не ставьте производительность перед чтением кода до тех пор, пока вы не определите, что вы попали в узкое место - вы были бы в очень ограниченной среде, чтобы это было чем-то вроде проблемы.

Наконец, многие компиляторы в любом случае будут ссылаться на INSERT_ID. Это означает, что все ссылки на INSERT_ID будут заменены во время компиляции значением в Menu.First, и переменная никогда не будет создана. Я не знаю достаточно о компиляторе Android, чтобы точно сказать, так или иначе, но я был бы удивлен, если бы этого не делал.

+0

Ну, исходя из разработки Java Swing, мне не нужно было беспокоиться о системных ресурсах и т. Д., И мне нужно для разработки Android (на основе просмотра видео с 2010-го ввода-вывода Google). Я действительно знал о тех моментах, которые вы упомянули (хотя хороший редактор кода может искать/заменять Menu.FIRST на любое новое значение, которое вы хотите достаточно просто), и обычно я ДЕЙСТВИТЕЛЬНО большой по чтению кода, но, как я уже сказал , думал, что для разработки Android, чем меньше переменных я определяю/создаю, тем лучше. Спасибо за ваш ответ. –

+0

Я понимаю, что говорит @ Мартин Харрис, но я не понимаю, зачем вообще использовать Menu.FIRST. Не удалось объявить INSERT_ID как INSERT_ID = 1 ;? – prostynick

+1

@prostynick Поскольку возможно, что более новая версия фреймворка Android изменит реализацию основного меню, так что Menu.FIRST станет 0 или -1 или 456. Это, вероятно, никогда не произойдет, потому что слишком много приложений будут сложными закодировано до 1, но использование константы дает читаемость (INSERT_ID - это первый элемент в меню, а не «1», который может быть первым или вторым элементом в зависимости от того, как вы индексируете) и безрисковой будущей совместимости при нулевой стоимости. почему бы не использовать его? –

Смежные вопросы