Часто в примерах по программированию в Android встречаю записи, например, такого вида:
Intent intent = new Intent(this, NewActivity.class);
startActivity(intent);
Однако я сам часто пишу этот же код в таком виде:
startActivity(new Intent(this, NewActivity.class));
Возник вопрос как всё-таки необходимо писать код, есть ли разница?
Пишите так, как:
В первом случае вы создаете переменную, а во втором случае - нет. В первом случае вы можете подергать еще какие-то методы, а во втором случае - нет. Но если оно и не нужно, то зачем загоняться? После оптимизации байткода все равно итог будет одинаковый. Бывает конечно 0.5 случая в жизни, когда такой объект надо сделать членом класса, а иначе магии не произойдет, но это крайне редкие случаи.
Есть такой момент как читабельность кода. Даже если пишете для себя учебные примеры, то открыв их через год вы будете лучше ориентироваться в них, если будете следовать правилам из первого примера. Но еще должно соблюдаться условие, что все переменные, методы итд имеют нормальные имена, которые описывают предметную область и/или назначение этих элементов языка.
Советую прочитать "Чистый код" Мартина.
Разница конечно есть. Разница в читабельности кода.
Я лично предпочитаю всегда 1-й вариант. Не люблю сильного увлечения анонимными вещами, которые приводят к коду "лесенкой", типа:
if(MyDbHelper.isValidClassicDatabase(databaseFile)) {
new HelperDialogs.AskInput(MainActivity.this)
.withTitle(R.string.enterImportPassword)
.withPositiveButton(R.string.ok)
.withNegativeButton(R.string.cancel)
.withInput(input)
.withOnResultListener(new HelperDialogs.AskInput.OnResultListener() {
@Override
public void onPositiveResult(EditText input) {
if(input.getText()==null || input.getText().toString().length()==0)
HelperDialogs.showMessage(MainActivity.this,
R.string.warning, R.string.emptyPassword, true);
else {
//blah-blah
HelperDialogs.showMessage(MainActivity.this,
R.string.warning, R.string.wrongPassword, true);
return;
}
}
@Override
public void onNegativeResult() {
}
}).show();
}
В вышеприведенном примере, таки сложно разобраться что там происходит.
А это неминуемо случится, если вы будете следовать примеру №2
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Начал изучать JavaFX, и писать некоторые маленькие GUI приложенияВроде все хорошо, но когда перехожу на что-то сложное в коде всегда какой-то бардак...
Для реализации задачи, мне необходим Service который запускается при старте приложения и останавливается при закрытии
Пытался запретить выбор файлов (можно выбирать только файлы) путем функции JFileChooserDIRECTORIES_ONLY: