Можно ли оптимизировать этот (матричный) алгоритм:
// | case 1 | case 2 | case 3 |
// ------|--------|--------|--------|
// | | | |
// case a| a1 | a2 | a3 |
// | | | |
// case b| b1 | b2 | b3 |
// | | | |
// case c| c1 | c2 | c3 |
// | | | |
switch (var)
{
case 1:
switch (subvar)
{
case a:
process a1;
case b:
process b1;
case c:
process c1;
}
case 2:
switch (subvar)
{
case a:
process a2;
case b:
process b2;
case c:
process c2;
}
case 3:
switch (subvar)
{
case a:
process a3;
case b:
process b3;
case c:
process c3;
}
}
Код довольно прост, но вы должны представить себе более сложный с большим количеством «switch / case».
Я работаю с 3 переменными. В зависимости от того, принимают ли они значения 1, 2, 3 или a, b, c или альфа, бета, у Чарли есть разные процессы для достижения. Можно ли оптимизировать его любым другим способом, кроме как через серию «переключатель / кейс»?
(вопрос уже задан на французском здесь ).
Редактировать : (из ответов Драна Дейна на комментарии ниже. Они также могут быть в этом более заметном месте!)
« optimize » следует понимать как наличие для записи меньшего количества кода , меньшего числа «переключатель / регистр». Идея состоит в том, чтобы улучшить удобочитаемость, удобство обслуживания , , а не производительность.
Возможно, есть способ написать меньше кода с помощью «Цепочки ответственности», но это решение не оптимально во всех отношениях, поскольку требует создания множества объектов в памяти.