Цепочка нескольких вызовов методов одновременно?Пример предоставлен - PullRequest
0 голосов
/ 24 февраля 2019

Проще говоря, у меня есть оператор if с несколькими различными результатами, но много общего кода.
Я хочу убедиться, что следующий код является правильным способом сделать то, что я пытаюсьdo
(например: цепочка вызовов методов, как показано) .. это правильно?

SharedPreferences getPrefs =
    PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

final String notifType = getPrefs.getString
    (PREF_NOTIFICATION_TYPE, NOTIFICATION_TYPE_SOUND_AND_VIBRATION);

if (notifType != null && notifType.equals
    (NOTIFICATION_TYPE_SOUND_AND_VIBRATION)) {
        // Call the appropriate Methods, depending on the Preference..
        notificationVibration();
        playNotificationTone();
        showReminderNotification();

} else if (notifType !=null && notifType.equals
    (NOTIFIATION_TYPE_VIBRATION_ONLY)) {
        // Calling alot of the same code, but minus the Sound..
        notificationVibration();
        showReminderNotification();

} else if (notifType !=null && notifType.equals
    (NOTIFIATION_TYPE_SILENT_REMINDER)) {
        // Again re-using common code..
        showReminderNotification(); 
}

public void notificationVibration() {
    // Vibration code here
}

public void playNotificationTone() {
    // Sound code here
}

public void showReminderNotification() {
    // Notification code here
}

SO - isэто правильный путь для этого?
Могу ли я объединить вызовы методов (как показано) и сделать так, чтобы все они запускались одновременно?
Если нет, то как правильно эффективно выполнить это?
Обратная связь с благодарностью!Благодаря.

Ответы [ 2 ]

0 голосов
/ 24 февраля 2019

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

private void methodName() {

    if (notifType != null) 
        return

    switch(notifType) {
        case NOTIFICATION_TYPE_SOUND_AND_VIBRATION:
            ....
        break;
        case NOTIFIATION_TYPE_VIBRATION_ONLY:
            ....
        break;
        case NOTIFIATION_TYPE_SILENT_REMINDER:
            ....
    }
}
0 голосов
/ 24 февраля 2019

Вы можете использовать блок if с switch внутри:

if (notifType != null) {
    switch(notifType) {
        case NOTIFICATION_TYPE_SOUND_AND_VIBRATION:
            ....
        break;
        case NOTIFIATION_TYPE_VIBRATION_ONLY:
            ....
        break;
        case NOTIFIATION_TYPE_SILENT_REMINDER:
            ....
    }
}

Вы также можете использовать несколько операторов if вместо switch.Единственный способ сделать код более эффективным - использовать if (notifType != null) один раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...