I casi speciali (più semplici) hanno percorsi di codice separati?

3

Ho un metodo piuttosto complesso che può essere chiamato in due possibili "scenari". Uno è un caso speciale dell'altro in cui tutti i loop foreach nidificati vengono eseguiti solo una volta e diverse istruzioni if sono false in modo tale che essenzialmente solo due righe di codice annidate profondamente all'interno del metodo siano effettivamente eseguite.

Ora la domanda è: dovrei fornire un percorso di codice separato (più semplice) per il caso speciale anche se il codice complesso lo gestisce altrettanto bene?

Suppongo che il codice sia più leggibile / comprensibile in questo modo ma non voglio dare l'impressione che i due casi siano gestiti in modo diverso.

Le prestazioni non sono un problema qui, quindi il fatto che un percorso di codice più semplice possa essere eseguito più velocemente è trascurabile.

Codice di esempio:

foreach(...)
{
    foreach(...)
    {
    ...
        if(...)
        {
            ...
        }

        Something();
    }
}

rispetto a

if(SpecialCase)
{
    Something();
}
else
{
    foreach(...)
    {
        foreach(...)
        {
        ...
            if(...)
            {
                ...
            }

            Something();
        }
    }
}
    
posta Roman Reiner 15.07.2014 - 16:36
fonte

2 risposte

4

In sostanza duplicando alcune logiche si crea ridondanza. Questa è un'opportunità per i bug.

I suppose the code would be more readable/understandable that way

No, perché ora i lettori devono capire una cosa in più rispetto a prima. Devono ancora capire l'algoritmo completo per vedere cosa succede nel caso di !SpecialCase .

I don't want to give the impression that the two cases are handled differently

Bene, sei che dà quell'impressione. Ciò sarà fonte di confusione per gli altri.

Considera solo l'aggiunta di un commento:

"In case of SpecialCase the following algorithm is equivalent to Something();"

    
risposta data 15.07.2014 - 20:01
fonte
0

Per me sarebbe un equilibrio di costi. Lo sviluppo extra & i costi di manutenzione sono giustificati dal costo di esecuzione risparmiato? Dici che "le prestazioni non sono un problema", quindi potresti aumentare le spese senza alcun rimborso. Non farlo.

    
risposta data 17.07.2014 - 13:44
fonte

Leggi altre domande sui tag