Exercício - Remover blocos de código das instruções if

Concluído

Os desenvolvedores de software adoram quando podem escrever código que economiza pressionamentos de teclas e espaço visual sem sacrificar a legibilidade. Só aplique a frase "menos é mais" no processo de desenvolvimento quando isso tornar seu código mais legível e compreensível.

Se um bloco de código precisar de apenas uma linha de código, é provável que você não precise definir um bloco de código formal usando chaves encaracoladas. Embora tecnicamente você nem precise separar seu código em várias linhas, combinar instruções em uma única linha pode tornar seu código difícil de ler.

A remoção das chaves conforme descrito anteriormente é uma mudança estilística que não deve afetar a funcionalidade do seu código. No entanto, você deve tomar medidas para garantir que suas alterações não afetem negativamente a legibilidade do código. Você pode avaliar o impacto ao remover as chavetas e o espaço em branco e, em seguida, reverter para o código original caso considere que as alterações tornaram o código menos legível.

Criar um exemplo de uma instrução if que usa um bloco de código

  1. Verifique se você tem um arquivo de Program.cs vazio aberto no Visual Studio Code.

    Se necessário, abra o Visual Studio Code e conclua as seguintes etapas para preparar um arquivo de Program.cs no Editor:

    1. No menu Arquivo , selecione Abrir pasta.

    2. Use a caixa de diálogo Abrir pasta para navegar até a pasta CsharpProjects e abri-la.

    3. No painel do Visual Studio Code EXPLORER, selecione Program.cs.

    4. No menu Seleção de código do Visual Studio, selecione Selecionar tudo e pressione a tecla Delete.

  2. Digite o seguinte código no Editor de Códigos do Visual Studio:

    bool flag = true;
    if (flag)
    {
        Console.WriteLine(flag);
    }
    
  3. Salve seu arquivo de código e, em seguida, use o Visual Studio Code para executar seu código.

    Digite dotnet run no prompt de comando do Terminal para executar o seu código.

  4. Verifique se você vê a seguinte saída:

    True
    

    Seu código representa um bom ponto de partida, mas você tem um bloco de código que inclui uma única linha de código. Neste caso, é necessário definir um bloco de código?

Retire os suportes encaracolados

O código acima executa um bloco de código quando flag é true. Como esse bloco de código contém uma única linha de código, você tem a opção de remover as chaves encaracoladas.

  1. Atualize seu código no Editor de Códigos do Visual Studio da seguinte maneira:

    bool flag = true;
    if (flag)
        Console.WriteLine(flag);
    

    Observação

    A remoção das chaves não altera o fato de que Console.WriteLine(flag); é o bloco de código da instrução if.

  2. Salve seu arquivo de código e, em seguida, use o Visual Studio Code para executar seu código.

  3. Observe que a saída é a mesma de antes.

    Você ainda deve ver a seguinte saída:

    True
    

    No entanto, há duas linhas de código a menos. Mais importante ainda, com a linha de código abaixo e o if recuado, o código ainda é facilmente legível.

Examinar a legibilidade das instruções if de linha única

Nesta etapa, você examinará um caso em que a legibilidade do código pode ser afetada negativamente.

Como a instrução if e a chamada de método Console.WriteLine() são curtas, podes ficar tentado a combiná-las numa única linha. Afinal, a sintaxe C# para a if instrução permite que você combine instruções dessa maneira.

  1. Atualize seu código no Editor de Códigos do Visual Studio da seguinte maneira:

    bool flag = true;
    if (flag) Console.WriteLine(flag);
    
  2. Salve seu arquivo de código e, em seguida, use o Visual Studio Code para executar seu código.

  3. Observe que a saída ainda é a mesma.

  4. Reserve um minuto para considerar a legibilidade do código.

    Imagine os dois exemplos de código anteriores aninhados em uma seção maior de código. A combinação de instruções de código (como você fez na etapa 4) pode dificultar a leitura.

    Ao implementar uma if instrução que inclui um bloco de código de instrução única, a Microsoft recomenda que você considere estas convenções:

    • Nunca use formulário de linha única (por exemplo: if (flag) Console.WriteLine(flag);
    • O uso de chaves é sempre aceite e torna-se obrigatório se algum bloco de uma instrução composta if/else if/.../else utilizar chaves ou se o corpo de uma instrução única abranger várias linhas.
    • As chaves podem ser omitidas apenas se o corpo de cada bloco associado a uma instrução composta de if/else if/.../else estiver numa única linha.
  5. Para examinar o impacto na legibilidade para construções if-elseif-else maiores, atualize seu código da seguinte maneira:

    string name = "steve";
    if (name == "bob") Console.WriteLine("Found Bob");
    else if (name == "steve") Console.WriteLine("Found Steve");
    else Console.WriteLine("Found Chuck");
    
  6. Salve seu arquivo de código e, em seguida, use o Visual Studio Code para executar seu código.

    Quando você executa o código, ele deve produzir a seguinte saída:

    Found Steve
    

    O código é executado, mas essas linhas de código são densas e difíceis de ler. Talvez você queira reformatar o código para incluir uma quebra de linha após as instruções if, else if e else.

  7. Compare o código que você acabou de executar com o seguinte código:

    string name = "steve";
    
    if (name == "bob")
        Console.WriteLine("Found Bob");
    else if (name == "steve") 
        Console.WriteLine("Found Steve");
    else
        Console.WriteLine("Found Chuck");
    

    Observe como é muito mais fácil ler o segundo exemplo de código.

Recapitulação

Aqui estão algumas coisas importantes a serem lembradas sobre if blocos de código de instrução e legibilidade:

  • Se te aperceberes de que tens apenas uma linha de código listada dentro dos blocos de código de uma if-elseif-else declaração, podes remover as chaves do bloco de código e o espaço em branco. A Microsoft recomenda que as chaves sejam usadas consistentemente para todos os blocos de código de uma declaração if-elseif-else (quer presentes ou removidas consistentemente).
  • Remova apenas as chaves de um bloco de código quando isso tornar o código mais legível. É sempre aceitável incluir aparelhos encaracolados.
  • Remova o feed de linha apenas se ele tornar o código mais legível. A Microsoft sugere que seu código será mais legível quando cada instrução for colocada em sua própria linha de código.