Menu
Coddy logo textTech

Rifattorizzare i cicli

Fa parte della sezione Logica e flusso del percorso C# di Coddy. Lezione 16 di 66.

Il refactoring dei cicli può migliorare la leggibilità e la manutenibilità del codice.

Sostituisci il ciclo tradizionale con foreach per semplicità:

string[] fruits = { "apple", "banana", "cherry" };

// Prima del refactoring
for (int i = 0; i < fruits.Length; i++)
{
    Console.WriteLine(fruits[i]);
}

// Dopo il refactoring
foreach (string fruit in fruits)
{
    Console.WriteLine(fruit);
}

Estrai la logica complessa dei cicli in metodi:

int[] numbers = { 1, 2, 3, 4, 5, 6 };

// Antes de la refactorización
for (int i = 0; i < numbers.Length; i++)
{
    if (numbers[i] % 2 == 0)
    {
        Console.WriteLine($"{numbers[i]} is even");
    }
}

// Después de la refactorización con un método auxiliar
for (int i = 0; i < numbers.Length; i++)
{
    if (IsEven(numbers[i]))
    {
        Console.WriteLine($"{numbers[i]} is even");
    }
}

// Método auxiliar
bool IsEven(int number)
{
    return number % 2 == 0;
}

Suddividi i cicli lunghi in cicli più brevi e mirati:

int[] data = { 1, 2, 3, 4, 5 };

// Prima: un unico ciclo che svolge più operazioni
for (int i = 0; i < data.Length; i++)
{
    // Elabora i dati
    data[i] = data[i] * 2;
    // Stampa i risultati
    Console.WriteLine(data[i]);
}

// Dopo: cicli separati con scopi chiari
// Elabora i dati
for (int i = 0; i < data.Length; i++)
{
    data[i] = data[i] * 2;
}

// Stampa i risultati
for (int i = 0; i < data.Length; i++)
{
    Console.WriteLine(data[i]);
}
challenge icon

Sfida

Medio

Crea un metodo chiamato refactorArrayFilter che:

  1. Accetta un array di interi come parametro
  2. Implementa due versioni di codice che contano i numeri divisibili per 3:
    • Originale: usa un ciclo for tradizionale con un'istruzione if
    • Rifattorizzata: usa un ciclo foreach con la logica estratta in un metodo helper
  3. Restituisce il conteggio della versione rifattorizzata come intero

Ad esempio, dato l'array [3, 4, 6, 7, 9], il metodo dovrebbe restituire 3 perché ci sono tre numeri (3, 6 e 9) divisibili per 3.

Nota: non è necessario stampare nulla: restituisci semplicemente il conteggio come intero.

Provalo tu

public class RefactorArrayFilter
{
    // Implementa il metodo refactorArrayFilter
    public static int refactorArrayFilter(int[] numbers)
    {
        // Scrivi qui il tuo codice
        
    }
    
    // Implementa tutti i metodi di supporto necessari
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore C# online