Как выбрать между различными условиями, зависящими от другой переменной

1

Я думал об этой проблеме в течение некоторого времени, но я просто не могу придумать решение без необходимости писать дубликат кода. Проблема в части С# и части псевдокода:

bool test = true;  
if (test == true)
{
    if(first condition) {code}
}
else
{
    if(different condition) {same code as above)
}

Я должен использовать эту часть в интенсивной части моей программы, и мне придется перенести 3 больших параметра, поэтому я бы предпочел не использовать метод.

Есть ли другой способ решить эту проблему?

Теги:
design-patterns
design

4 ответа

3
Лучший ответ
if ((test && first_condition) || (!test && different_condition)) {
    callSomeFunction();
}
  • 0
    Другое different_condition - это !test Так что это не имеет смысла. Это оставило бы именно то, что есть у OP. Если я не понимаю вас.
  • 3
    Вряд ли можно понять, почему точно такой же ответ @Lee, опубликованный позже, чем этот, получает положительные голоса, а этот получает отрицательные. Кроме того, что ты пропустил ) .
Показать ещё 2 комментария
5
if((test && firstCondition) || (!test && differentCondition)) {
    //code
}
0

В зависимости от сложности условий этот подход иногда может помочь:

bool doBigCall = false;
if (test1)
{
    if (test2)
    {
        doBigCall = true;
    }
    else
    {
        // ...
    }
}
else
{
    // ...
}
if (doBigCall)
{
    // write the big bit of code just once
}
0

Я бы сделал это так:

// create an inline function to capture the  
Action workAction = () => { //work; }

bool test = true;  
if (test == true)
{
    if(first condition) {workAction(); }
}
else
{
    if(different condition) {workAction(); ) 
}
  • 1
    Это точно так же, как код ОП
  • 0
    Ну, кроме абстрагирования работы как действия. Сложные логические утверждения сложно сделать правильно, ИМО.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню