Refatoração de Loops
Parte da seção Lógica & Fluxo do Journey de C# da Coddy. Lição 16 de 66.
Refatorar loops pode melhorar a legibilidade e a manutenibilidade do código.
Substitua o loop tradicional por foreach para simplificar:
string[] fruits = { "apple", "banana", "cherry" };
// Antes da refatoração
for (int i = 0; i < fruits.Length; i++)
{
Console.WriteLine(fruits[i]);
}
// Depois da refatoração
foreach (string fruit in fruits)
{
Console.WriteLine(fruit);
}Extraia a lógica complexa do loop em métodos:
int[] numbers = { 1, 2, 3, 4, 5, 6 };
// Before refactoring
for (int i = 0; i < numbers.Length; i++)
{
if (numbers[i] % 2 == 0)
{
Console.WriteLine($"{numbers[i]} is even");
}
}
// After refactoring with helper method
for (int i = 0; i < numbers.Length; i++)
{
if (IsEven(numbers[i]))
{
Console.WriteLine($"{numbers[i]} is even");
}
}
// Helper method
bool IsEven(int number)
{
return number % 2 == 0;
}Quebre loops grandes em loops menores e mais focados:
int[] data = { 1, 2, 3, 4, 5 };
// Antes: Um loop grande fazendo múltiplas coisas
for (int i = 0; i < data.Length; i++)
{
// Process data
data[i] = data[i] * 2;
// Print results
Console.WriteLine(data[i]);
}
// Depois: Loops separados com propósitos claros
// Processar dados
for (int i = 0; i < data.Length; i++)
{
data[i] = data[i] * 2;
}
// Imprimir resultados
for (int i = 0; i < data.Length; i++)
{
Console.WriteLine(data[i]);
}Desafio
MédioCrie um método chamado refactorArrayFilter que:
- Aceite um array de inteiros como parâmetro
- Implemente duas versões do código que contam números divisíveis por 3:
- Original: Use um loop for tradicional com uma instrução if
- Refatorada: Use um loop foreach com a lógica extraída para um método auxiliar
- Retorne a contagem da versão refatorada como um inteiro
Por exemplo, dado o array [3, 4, 6, 7, 9], o método deve retornar 3, porque há três números (3, 6 e 9) divisíveis por 3.
Observação: você não precisa imprimir nada — apenas retorne a contagem como um inteiro.
Experimente você mesmo
public class RefactorArrayFilter
{
// Implemente o método refactorArrayFilter
public static int refactorArrayFilter(int[] numbers)
{
// Escreva seu código aqui
}
// Implemente quaisquer métodos auxiliares que precisar
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica & Fluxo
1Matrizes Multidimensionais
Noções Básicas de Matrizes 2DDeclaração e Inicialização de Matrizes 2DAcesso aos Elementos de Matrizes 2DLoops Aninhados com Matrizes 2DMatrizes IrregularesOperações Comuns com MatrizesRevisão - Multidimensional4Técnicas de Controle de Fluxo
Retornos AntecipadosCláusulas de GuardaInstruções de Salto (goto)Break e ContinueSimplificando Condicionais Aninhadas7Operadores Lógicos Avançados
Avaliação de Curto-CircuitoOperadores Lógicos CondicionaisPrecedência de OperadoresRevisão - Operadores Avançados2Tomada de Decisões Avançada
Múltiplas CondiçõesLógica Booleana ComplexaComparação entre If e SwitchInstruções Switch AninhadasRevisão - Decisões Avançadas5Tratamento de Exceções
Noções básicas de Try-CatchTipos de ExceçãoMúltiplos blocos CatchTrabalhando com ArquivosBloco FinallyUsando Using vs. Try-FinallyExceções PersonalizadasRecapitulação - Tratamento de Erros3Aprimoramentos de Loops
Desempenho de LoopsIteração de Estruturas ComplexasCada Tipo de LoopRefatoração de LoopsRevisão - Loops Otimizados6Tratamento de Nulos
Fundamentos de Referências NulasTipos de Valor AnuláveisPadrões de Verificação de NulosProgramação DefensivaRecapitulação — Segurança contra NulosPratique por conta própria: Compilador de C# online