Recomendações de Indentação em IAlg

Atualizado pela última vez em outubro de 2021.

A indentação é o recuo à direita no início das linhas de código. Seu objetivo principal é indicar quais linhas são continuação de comandos de linhas anteriores que ainda não terminaram. A indentação é um elemento importante na legibilidade de código. Também pode ser chamada de identação ou endentação.

Tabulações ou Espaços

A indentação pode ser feita usando tabulações ou espaços mas não misture tabulações com espaços, porque tabulações têm tamanhos diferentes em programas diferentes. Se você mistura, código que parece indentado num programa parece sem indentação em outro. Para ajudar a evitar a mistura, peça ao editor que mostre quais brancos são tabulações e quais são espaços. É comum que alunos reclamem que a indentação estava certa quando entregaram o código e não sabem o que aconteceu para ela ter sido "misteriosamente" alterada. Isso é resultado da mistura.

A maioria dos professores do DAC usam espaços e portanto a maioria dos exemplos no Dredd usam espaços. Em IAlg não é muito comum um exercício que já vem com código para completar, mas esteja atento ao fato de que código feito por terceiros precisa ser adequado ao seu estilo, para não misturar tabulações e espaços.

Quem usa tabulações precisa tomar cuidado com alinhamento de código. Quando é necessário usar parte de uma tabulação para dar o recuo desejado, é comum que programadores terminem o recuo com espaços, fazendo assim a mistura de tabulações e espaços. Fique atento.

Quem usa espaços precisa estar atento à configuração do editor. Não faz sentido escrever espaços de um em um, ou apagar de um em um, tentando fazer o alinhamento no olhômetro. O editor deve estar configurado para inserir e remover vários espaços de uma só vez, de maneira a aumentar e reduzir o recuo com um único toque no teclado. Use a tecla TAB para aumentar ou diminuir um nível inteiro de indentação, mesmo nas linhas que já estão escritas (geralmente é necessário selecionar as linhas antes). A tecla backspace também deve estar configurada para voltar um nível completo.

Tamanho da Indentação

Recomendamos usar 3 ou 4 espaços em cada nível de indentação. Mais do que isso vai causar muito desperdício de espaço horizontal. Menos do que isso vai dificultar a determinação do nível só olhando. Atenção ao completar código iniciado por terceiros: não deixe algumas partes do arquivo com indentação de um tamanho e outras partes com outro tamanho. Os exemplos entregues costumam usar 4 espaços.

Usar um único espaço para indentação é considerado erro de indentação e causa redução da nota.

Dicas Gerais

Um dos erros mais comuns dos iniciantes é deixar o return da função main fora do lugar. Ele deve estar indentado como qualquer outro comando, preferencialmente sem um monte de linhas de branco antes, que podem ajudar a escondê-lo.

Errado (return sem recuo):

int main() { float a, b; cin >> a >> b; cout << a+b << endl; return 0; }

Certo (return como qualquer comando):

int main() { float a, b; cin >> a >> b; cout << a+b << endl; return 0; }

Faça a indentação dos else if de forma a destacar os caminhos possíveis. No exemplo abaixo, veja como a indentação do código à esquerda passa a falsa impressão de separação em dois caminhos, enquanto a indentação da direita destaca a separação em três caminhos.

RuimBom
if (teste1) { comando1; comando2; } else { if (teste2) comando3; else comando4; } if (teste1) { comando1; comando2; } else if (teste2) comando3; else comando4;

Não se deve começar novos comandos na mesma linha de um comando anterior. Continuar na mesma linha depois de fechar chaves só aceitável com else (continuação de um if-else) ou com while (continuação de um do-while). No caso do do-while, não se deve colocar o while numa linha nova, para não passar a impressão de estar iniciando um comando novo.

Errado (if parece continuação do for) Certo (else é continuação do if)
for (;;) { comando; } if (teste) { if (teste) { comando; } else if (teste) {

Os níveis de indentação devem aumentar de um em um. Por exemplo: não comece os comandos da função principal sem nenhuma indentação mas também não use dois níveis para começar.

Modularização e indentação

Depois de aprender modularização fica mais fácil evitar escrever código com muitos níveis de indentação. Separar uma parte do código num módulo independente permite escrever qualquer coisa com poucos níveis de indentação.

Esta página é mantida por Bruno Schneider para a disciplina de IAlg