Как избежать дублирования кода?

Можно ли избежать дублирования кода в таких случаях? (Java-код)

void f()
{
    int r;
    boolean condition = true;
    while(condition)
    {
        // some code here (1)

        r = check();
        if(r == 0)
            break ;
        else if(r == 1)
            return ;
        else if(r == 2)
            continue ;
        else if(r == 3)
            condition = false;

        // some code here (2)

        r = check();
        if(r == 0)
            break ;
        else if(r == 1)
            return ;
        else if(r == 2)
            continue ;
        else if(r == 3)
            condition = false;

        // some code here (3)
    }
    // some code here (4)
}

int check()
{
    // check a condition and return something
}

Возможным решением может быть использование исключений, но это не кажется хорошей практикой. Существует ли так называемый хороший шаблон управления потоком программы в таких случаях? Например, способ вызова break ; изнутри функции check(). (Возможно в других языках программирования)

5
задан DaveFar 27 January 2012 в 15:05
поделиться