Exercício – Remover blocos de código de instruções if
Os desenvolvedores de software adoram quando podem escrever código que salva pressionamentos de teclas e espaço visual sem sacrificar a legibilidade. Aplique apenas a frase "menos é mais" no processo de desenvolvimento quando ele torna seu código mais legível e compreensível.
Se o bloco de código precisar de apenas uma linha, é provável que você não precise definir um bloco formal usando chaves. Embora tecnicamente você nem precise separar seu código em várias linhas, a combinação de instruções em uma única linha pode dificultar a leitura do código.
Remover as chaves conforme descrito acima é uma alteração de estilo que não deve afetar a funcionalidade do código. No entanto, você deve tomar medidas para garantir que suas alterações não impactem negativamente o quão legível o código é. Você pode avaliar o impacto da remoção das chaves e dos espaços em branco e reverter para o código original se achar que as alterações tornaram seu código menos legível.
Criar um exemplo de uma instrução if que usa um bloco de código
Verifique se você tem o arquivo Program.cs vazio aberto no Visual Studio Code.
Se necessário, abra o Visual Studio Code e conclua as seguintes etapas para preparar o arquivo Program.cs no Editor:
No menu Arquivo , selecione Abrir Pasta.
Use a caixa de diálogo Abrir Pasta para navegar e, em seguida, abra a pasta CsharpProjects.
No painel EXPLORER do Visual Studio Code, selecione Program.cs.
No menu Seleção do Visual Studio Code, selecione Selecionar Tudo e pressione a tecla Delete.
Digite o seguinte código no Editor do Visual Studio Code:
bool flag = true; if (flag) { Console.WriteLine(flag); }Salve o arquivo de código e use o Visual Studio Code para executar o código.
Insira
dotnet runno prompt de comando do Terminal para executar o código.Verifique se você vê a seguinte saída:
TrueSeu código representa um bom ponto de partida, mas você tem um bloco de código que inclui uma única linha de código. Nesse caso, a definição de um bloco de código é necessária?
Remover as chaves
O código acima executa um bloco de código quando flag é true. Como esse bloco de código contém apenas uma linha, você tem a opção de remover as chaves.
Atualize o código no Editor do Visual Studio Code da seguinte maneira:
bool flag = true; if (flag) Console.WriteLine(flag);Observação
Remover as chaves não altera o fato de que
Console.WriteLine(flag);é o bloco de código da instruçãoif.Salve o arquivo de código e use o Visual Studio Code para executar o código.
Observe que a saída é a mesma de antes.
A seguinte saída ainda deve ser exibida:
TrueNo entanto, há duas linhas de código a menos. Mais importante ainda, com a linha de código abaixo da
ifindentada, seu código continua facilmente legível.
Examinar a legibilidade das instruções 'if' em formato 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 do método Console.WriteLine() são curtas, você pode ser tentado a combiná-las em uma única linha. Afinal, a sintaxe C# da if instrução permite que você combine instruções dessa maneira.
Atualize o código no Editor do Visual Studio Code da seguinte maneira:
bool flag = true; if (flag) Console.WriteLine(flag);Salve o arquivo de código e use o Visual Studio Code para executar o código.
Observe que a saída ainda é a mesma.
Leve um minuto para considerar a legibilidade do código.
Imagine os dois exemplos de código anteriores aninhados em uma seção maior do código. Combinar instruções de código (como você fez na etapa 4) pode dificultar a leitura.
Ao implementar uma instrução
ifque inclui um bloco de código de instrução única, a Microsoft recomenda que você considere estas convenções:- Nunca use o formulário de linha única (por exemplo: if (flag) Console.WriteLine(flag);
- O uso de chaves é sempre aceito e necessário se um bloco de uma instrução composta if/else if/.../else usar chaves ou se um corpo de instrução única abranger várias linhas.
- As chaves só poderão ser omitidas se o corpo de cada bloco associado a uma instrução composta if/else if/.../else for escrito em apenas uma linha.
Para examinar o impacto de 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");Salve o arquivo de código e use o Visual Studio Code para executar o código.
Quando você executa o código, ele deve produzir a seguinte saída:
Found SteveO 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 ifeelse.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 o quanto é mais fácil ler o segundo exemplo de código.
Recapitulação
Aqui estão algumas coisas importantes a serem lembradas sobre legibilidade e blocos de código de instruções if:
- Se você perceber que tem apenas uma linha de código listada nos blocos de código de uma instrução
if-elseif-else, remova as chaves e o espaço em branco do bloco de código. A Microsoft recomenda que as chaves sejam usadas de modo consistente em todos os blocos de código das instruçõesif-elseif-elsepresentes no código, seja incluindo ou omitindo as chaves em todas as ocorrências semelhantes. - Só remova as chaves de um bloco de código quando isso tornar o código mais legível. A inclusão de chaves é sempre aceitável.
- Só remova o feed de linha se ele torna 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.