Как правильно писать код

446
15 июля 2017, 07:17

Часто в примерах по программированию в Android встречаю записи, например, такого вида:

Intent intent = new Intent(this, NewActivity.class);
startActivity(intent);

Однако я сам часто пишу этот же код в таком виде:

startActivity(new Intent(this, NewActivity.class));

Возник вопрос как всё-таки необходимо писать код, есть ли разница?

Answer 1

Пишите так, как:

  1. Угодно вашей душе
  2. Как написано в требованиях/гайдлайнах вашей работы/проекта

В первом случае вы создаете переменную, а во втором случае - нет. В первом случае вы можете подергать еще какие-то методы, а во втором случае - нет. Но если оно и не нужно, то зачем загоняться? После оптимизации байткода все равно итог будет одинаковый. Бывает конечно 0.5 случая в жизни, когда такой объект надо сделать членом класса, а иначе магии не произойдет, но это крайне редкие случаи.

Answer 2

Есть такой момент как читабельность кода. Даже если пишете для себя учебные примеры, то открыв их через год вы будете лучше ориентироваться в них, если будете следовать правилам из первого примера. Но еще должно соблюдаться условие, что все переменные, методы итд имеют нормальные имена, которые описывают предметную область и/или назначение этих элементов языка.

Советую прочитать "Чистый код" Мартина.

Answer 3

Разница конечно есть. Разница в читабельности кода.

Я лично предпочитаю всегда 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

READ ALSO
Работа с ANTLR4

Работа с ANTLR4

Не пойму почему конец файла не определяется?

242
Какие есть open-source GUI проекты на JavaFX/Swing? [требует правки]

Какие есть open-source GUI проекты на JavaFX/Swing? [требует правки]

Начал изучать JavaFX, и писать некоторые маленькие GUI приложенияВроде все хорошо, но когда перехожу на что-то сложное в коде всегда какой-то бардак...

248
Жизненный цикл android приложения

Жизненный цикл android приложения

Для реализации задачи, мне необходим Service который запускается при старте приложения и останавливается при закрытии

273
Выбор ТОЛЬКО папок в JFileChooser

Выбор ТОЛЬКО папок в JFileChooser

Пытался запретить выбор файлов (можно выбирать только файлы) путем функции JFileChooserDIRECTORIES_ONLY:

241