Вопрос оптимизации кода Java

Рейтинг: -1Ответов: 1Опубликовано: 13.03.2023

Занимаюсь совсем недавно и задался вопросом: а как обрабатывается миллион кнопок на больших коммерческих проектах? Не пишется же там на каждую кнопку своя функция. У меня получилось так, потому что if/else выглядело громоздко и сложно читаемо:

public void onClick(View v){

   /*if(v.getId() == R.id.button1){
       Toast.makeText(this, "вы нажали на кнопку 1", Toast.LENGTH_LONG);
   }*/

   String text = null;

   switch(v.getId){
        case R.id.button1: text = "Вы нажали на кнопку 1"; break;
        case R.id.button2: text = "Вы нажали на кнопку 2"; break;
        case R.id.button3: text = "Вы нажали на кнопку 3"; break;
        case R.id.button4: text = "Вы нажали на кнопку 4"; break;
        case R.id.button5: text = "Вы нажали на кнопку 5"; break;
        case R.id.button6: text = "Вы нажали на кнопку 6"; break;
        case R.id.button7: text = "Вы нажали на кнопку 7"; break;
        case R.id.button8: text = "Вы нажали на кнопку 8"; break;
        case R.id.button9: text = "Вы нажали на кнопку 9"; break;
        case R.id.button10: text = "Вы нажали на кнопку 10"; break;
        case R.id.button11: text = "Вы нажали на кнопку 11"; break;
        case R.id.button12: text = "Вы нажали на кнопку 12"; break;
        default: break;
   }
}

Ответы

▲ 1

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

В общем

Всё зависит от назначения кнопок, как уже заметил @Nofate. Есть три варианта:

Вариант 1: будет один метод, но такое возможно лишь только тогда, если по нажатию кнопок производятся похожие действия.

Вариант 2: будет по методу для каждой кнопки - если функционал кнопок очень сильно различается.

Вариант 3: будет по одному методу для каждой группы кнопок. Под "группой кнопок" в данном случае я подразумеваю кнопки с похожим функционалом.

В вашем случае

Такого кода в реальном проекте точно не будет =). Я про то, что вы написали кучу одинакового кода, что плохо всегда. Как решить эту проблему? Возможное решение уже сказал @gil9red в комментарии. Подробно рассматривать решение не буду, ведь вопрос был не о решении конкретно этой ситуации (насколько я понял). Ну и я думаю комментарий в пояснении не нуждается.

А вообще изучайте язык. Если вы будете знать принципы написания кода и будете уметь применять их на практике - то и с кнопками разберётесь и поймёте, как в какой конкретной ситуации лучше поступить.