@Urukhayy

Стоит ли делать такую оптимзацию?

Допустим разрабатывается меню с двумя стрелочками и картинкой между стрелочек. Одна стрелочка направлена вправо, другая влево.

Суть: при нажатии на соотв. стрелочку менять картинку. Нажали на правую, переключаем на картинку +1 в массиве. Если на левую, то переключаем на картинку -1 в массиве. Но таких массивов с картинками будет очень много. И все картинки на разные тематики. А если для каждой группы картинок писать схожий код переключения, то попахивает неоптимизированностью.

Так вот что предполагается сделать. Создаем функцию обработки стрелочек общую для всех групп картинок, и общую для обоих стрелок. (Чтобы различать какую стрелочку отправили в функцию, ставим аргумент Type = 2 правой, и 1 левой.)

Внутри этой функции, в зависимости от Type мы просто прибавим или отнимем индекс массива (возможно произведем доп. проверки). Затем делаем switch или проверки на то, с какой группой картинок работает пользователь. (Предварительно при выборе группы картинок мы записываем её ID, по которому будем знать, с каким массивом работать).
Так вот, в switch ставим эти самые ID групп картинок. Получается что-то вроде:
function test(Type) // 2 = вправо, 1 = влево
{
if(Type == 2) // прибавляем к служебной переменной 1
if(Type == 1) // отнимаем 1
switch(GroupID) // для примера взял глобальную переменную, которая хранит ID группы картинок, чтобы обращатсья к массиву этой группы картинок
{
case 1: // если группа 1, то заменяем область меню на картинку из массива, которому мы присвоили ID 1.
// и так далее с каждым case
}
}
  • Вопрос задан
  • 222 просмотра
Пригласить эксперта
Ответы на вопрос 2
sivabur
@sivabur
Заблокировали просто так!
Стоит если станет меньше кода и так будет понятней, ток это уже получается рефакторинг какой то а не оптимизация)
Ответ написан
Комментировать
@SMARTi
Если имеется повторяющийся код, его почти всегда нужно заменять одним универсальным методом. Но все зависит от ситуации и реализации. Так же для удобочитаемости не плохо бы заменить 2 = вправо, 1 = влево на какой-нибудь Enum или константы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы