В этих быстрых советах обсуждаются некоторые из наиболее распространенных сокращенных методов Java, с которыми вы столкнетесь, когда начинаете разрабатывать Android.
Вы найдете эти маленькие лакомые кусочки кода, которые мы называем Java-сокращением, используемые в примере кода Android SDK, и почти во всех книгах по разработке Android, опубликованных в это время, не говоря уже об онлайн-учебниках и форумах разработчиков. Ни один из этих советов не относится к Android; это просто методы Java, которые постоянно путают новичков в Java и Android, основываясь на электронных письмах, которые мы получаем от наших читателей.
Совет № 1: Унарные операторы Java (сокращение / увеличение переменной)
Многим разработчикам нравится их код, короткий и легкий для чтения. Как и некоторые другие языки программирования, Java включает в себя унарные операторы для простого увеличения и уменьшения значений переменных на 1.
Другими словами,
1
2
3
|
int counter = 1;
counter++;
counter—;
|
Этот код эквивалентен:
1
2
3
|
int counter = 1;
counter = counter + 1;
counter = counter – 1;
|
Эти унарные операторы могут появляться до (префикс) или после (постфикс) переменной. Расположение оператора определяет, будет ли выполняться операция увеличения / уменьшения до или после вычисления остальной части выражения. Например, следующий код показывает, как работают унарные операторы, манипулируя переменной, называемой counter, с помощью регистрации в Android :
1
2
3
4
5
6
7
|
int counter = 0;
Log.i(DEBUG_TAG, «The counter value is =»+counter++);
Log.i(DEBUG_TAG, «The counter value is =»+counter);
Log.i(DEBUG_TAG, «The counter value is =»+counter—);
Log.i(DEBUG_TAG, «The counter value is =»+counter);
Log.i(DEBUG_TAG, «The counter value is =»+(++counter));
Log.i(DEBUG_TAG, «The counter value is =»+—counter);
|
Совет № 2: Пропуск временных переменных (сокращение от ненужных переменных)
Разработчики Java обычно избегают создания переменных, которые им не нужны. Это особенно относится к временным или временным переменным, которые используются один раз для хранения результата оператора, но должны быть оставлены.
Вместо этого Java-разработчики часто просто используют оператор, который будет оцениваться как само «получающееся» значение. Это часто встречается, когда дело доходит до операторов return, но вы также увидите это и в других местах. Например, следующий подробный метод использует переменную «temp» с именем sum для хранения суммы двух целых чисел, а затем возвращает это значение:
1
2
3
4
5
|
int sumVerbose(int a, int b)
{
int temp = a + b;
return temp;
}
|
Многие Java-разработчики просто пропускают накладные расходы и хлопоты, связанные с созданием временной переменной, и просто оценивают оператор как часть оператора return, например так:
1
2
3
4
|
int sum(int a, int b)
{
return (a+b);
}
|
Этот стиль сохраняется для случаев, когда временная переменная используется только один раз. Если метод включает дополнительные операции с этим значением, обычно целесообразно использовать переменную с четким именем для удобства чтения кода. Кроме того, вы часто будете видеть более «многословный» стиль кодирования в коде, который имеет много функций отладки.
Совет № 3: Java «это» ключевое слово и методы цепочки
Вы будете часто видеть методы Java, соединенные вместе. Часто эти методы вызываются в экземпляре текущего класса (таким образом, ключевое слово this ). Подобно подсказке, обсужденной выше, возвращаемые значения каждого метода используются только для доступа к базовому методу. Следовательно, возвращаемое значение не сохраняется в значении контейнера, а просто вызывается базовый метод. Например:
1
|
InputStream is = getResources().openRawResource(R.drawable.icon);
|
Этот код логически эквивалентен следующему:
1
2
|
Resources myAppResources = this.getResources();
InputStream is = myAppResources.openRawResource(R.drawable.icon);
|
Совет № 4: Тернарные операторы Java (Сокращение If-Else)
Одно условное утверждение, которое вы, вероятно, увидите, будет использовать поддержку троичных операторов Java. Это сокращенный способ разработки простого оператора If-Else с использованием условного оператора (который может заключаться или не заключаться в круглые скобки), за которым следует знак вопроса (?), А затем оператор, который должен выполняться, если условное условие истинно, тогда двоеточие (:) и другое утверждение, которое должно произойти, если условие ложно.
Вот пример использования троичного оператора:
1
2
3
|
int lowNum = 1;
int highNum = 99;
int largerNum = lowNum < highNum ?
|
Это логический эквивалент следующего, гораздо более длинного фрагмента кода:
1
2
3
4
5
6
7
|
int largerNum;
if(lowNum < highNum)
{
largerNum = highNum;
} else {
largerNum = lowNum;
}
|
Этот вид Java-сокращения действительно подходит только тогда, когда ваш оператор If-Else прост. Иногда вы увидите, как разработчики вбивают много логики в одно из этих утверждений; мы не рекомендуем это. Используйте троичные операторы только тогда, когда они делают ваш код более легким для чтения, а не более сложным.
Совет № 5: Пустые операторы (сокращение от бесконечного цикла)
В Java вы можете иметь пустые операторы, просто завершив пустую строку кода точкой с запятой. Этот прием часто используется для указания условий цикла for () для создания бесконечного цикла, например:
1
2
3
|
for (;;) {
//Do something over, and over, and over again.
}
|
Каждый из компонентов цикла for () является пустым оператором. Это оценивается как истинное и, следовательно, цикл продолжается бесконечно. Как и в случае любой другой конструкции кода, убедитесь, что у любых бесконечных циклов, которые вы создаете, есть разумные случаи выхода.
Вывод
Может быть неприятно, когда разработчики, впервые знакомые с Java, сталкиваются со странным синтаксисом кода в первый день работы с Android — синтаксис, который обычно не рассматривается в типичном учебном пособии «Всё в Java за 20 минут». Теперь вы знаете, как выглядят некоторые из этих «стенографических» трюков, и что они значат. Независимо от того, используете ли вы их сами или нет, решать вам, но, по крайней мере, они не будут вас смущать, когда вы увидите их в примере кода! Удачи и не стесняйтесь поделиться некоторыми из ваших любимых сокращенных кодов Java, которые вы также встретили в разделе комментариев!
Об авторах
Разработчики мобильных приложений Лорен Дарси и Шейн Кондер являются соавторами нескольких книг по разработке Android: углубленная книга по программированию под названием « Разработка беспроводных приложений для Android» и « Разработка Android-приложений Sams TeachYourself за 24 часа» . Когда они не пишут, они тратят свое время на разработку мобильного программного обеспечения в своей компании и оказание консультационных услуг. С ними можно связаться по электронной почте [email protected] , через их блог на androidbook.blogspot.com и в Twitter @androidwireless .