ti-enxame.com

Abas versus espaços - qual é o caractere de indentação adequado para tudo, em todas as situações, sempre?

Os padrões de codificação para o código hospedado no drupal.org sugerem o uso de dois espaços para recuar o código; outros sites sugerem usar guias para recuar o código.

Qual é o caráter de indentação adequado para tudo e em todas as situações? Por favor, explique a resposta que você dá.

84
kiamlaluno

Espaços

Uma guia pode ter um número diferente de colunas, dependendo do seu ambiente, mas um espaço é sempre uma coluna.

Em termos de quantos espaços (ou tabulações) constituem recuo, é mais importante ser consistente em todo o código do que usar qualquer valor específico de parada de tabulação.

129
user8

Guias

Agora, é claro, a consistência importa mais do que qualquer uma delas, e um bom IDE torna as diferenças insignificantes. Dito isto, o objetivo deste tópico é ser uma guerra santa, portanto:

Eu prefiro guias:

  • Eles são um personagem especificamente destinado a indentação
  • Eles permitem que desenvolvedores com preferências diferentes em tamanho de recuo alterem a aparência do código sem alterá-lo (separação de dados e apresentação para a vitória proverbial!)
  • É impossível recuar pela metade algo com guias. Portanto, quando você copia o código de um site que usa três espaços no arquivo recuado de quatro espaços, não precisa lidar com o desalinhamento.
248
Fishtoaster

Use as guias para recuar o início da linha, ma guia por nível de recuo e deixe que todos escolham a largura que desejam que seja.

Use espaços se estiver alinhando caracteres dentro de uma linha, para que eles sempre se alinhem, independentemente do tamanho da guia.

E encontre e dê um soco em todos os autores de software que deixaram essa coisa estúpida se tornar um problema em primeiro lugar.
(Sério, por que isso é discutido? Em seguida, você estará me dizendo que também deseja usar vários caracteres para quebras de linha!)

117
Peter Boughton

Guias

  • permitem que os erros sejam mais perceptíveis , é irritante gerenciar micro espaços.
  • são consistentes , são usados ​​apenas para indentação, a menos que você esteja comentando errado.
  • são personalizáveis ​​, você pode especificar nas opções do editor qual a sua largura.
  • são mais produtivos , por que digitar 4 espaços quando você pode pressionar 1 guia.
  • têm menos tamanho que vários espaços.
  • ocupam mais espaço que um espaço.
  • leva menos tempo para passar .
  • tendem a funcionar melhor nos IDEs.

Os espaços devem ser usados ​​onde as guias são completamente inúteis.

Mesmo para alinhar parâmetros e comentários, as guias ainda funcionam melhor .

76
Tamara Wijsman

Todos os argumentos para abas são ótimos em teoria. Mas...

Em teoria, prática e teoria são iguais. Na prática, eles não são.

Sim, com guias você pode decidir o seu nível de indentação. E sim, você pode usar uma combinação de guias e espaços para alinhar as coisas. E em um mundo ideal seria

Na realidade, você não pode ver a diferença entre espaços e guias, eles sempre parecem confusos ao mover o código, e visualizar o código em outro programa que possui guias com 8 colunas é um incômodo.

Eu costumava usar guias. Então comecei a trabalhar como parte de uma equipe e a compartilhar código. Eu rapidamente me tornei um defensor dos espaços. Portanto, embora eu possa simpatizar com a utopia das guias, não consigo imaginar não usar espaços.

41
g .
31
Fishtoaster

Guias para a vitória.

23
Joel Barsotti

Eu absolutamente. ódio. 4. espaços.

Por quê? Principalmente porque estou cansado de navegar no meu código com um teclado e ter que pressionar constantemente leftleftleftleft para passar por um recuo. Isso nasceu das versões anteriores do Notepad ++ e até do bloco de notas simples do Windows, onde não havia um botão de formatação. Eu tinha tantos problemas quando as pessoas só usavam 3 quando eu usava 4 em qualquer outro lugar, entre outras coisas.

A outra razão é que o caractere de tabulação existe especificamente para indentação e foi adotado apenas posteriormente para navegação. Por que estamos fazendo spacespacespacespace quando um simples tab funciona? Por que os IDE devem lidar com 2 a 5 códigos espaçados e formatar corretamente quando uma guia simples e uma opção de preferência funcionariam?

Infelizmente sou minoria.

20
TheLQ

Pessoalmente, gosto de usar guias em tudo, pois cada desenvolvedor pode controlar a quantidade de indentação por guia. Dessa forma, você obtém flexibilidade na exibição.

Dito isto, eu geralmente imitamos qualquer estilo de codificação que esteja no arquivo para começar (já que passo muito tempo realizando trabalhos de manutenção).

12
Brandon

Não creio que exista recuo adequado (pelo menos não sem uma guerra menor).

Pessoalmente, gosto de quatro espaços. Eles me permitem ler código muito mais rápido e têm a mesma aparência em todos os editores - até o Vi.

10
Josip Medved

Espaços, porque quando você alinha comentários à direita do código, listas de parâmetros de funções ou expressões complexas de múltiplas linhas ou coisas dessa natureza, você deseja que seu belo trabalho apareça corretamente para todos. Se você usar guias e permitir que as pessoas definam seus tabstops de maneira diferente, elas quebrarão o alinhamento para todos os casos, exceto os mais simples, de recuo de código.

Além disso, é óbvio que todos no mundo devem usar o vim, o que torna trivial recuar, desassossegar e navegar por "tab stops", mesmo em arquivos com recuo de espaço.

8
hobbs

Tabs são a escolha natural e ortodoxa, pois são usadas por definição para indentação.

Infelizmente, as guias são implementadas de maneira desigual, portanto, a única solução do mundo real são 4 espaços.

6
Wizard79

Você obviamente precisa de uma abordagem combinada.

Se você está compartilhando código com outros desenvolvedores, precisa padronizar e, como isso é impossível (koff koff), você precisa fazer com que todos façam quatro espaços.

Então você precisa de um editor inteligente o suficiente para não ser estúpido quanto a isso, para saber que ele deve tratar uma linha com quatro espaços na frente como se fosse um recuo. Qualquer editor moderno IDE ou programador pode fluir automaticamente o código com espaços em vez de tabulações.

4
Dan Ray

Por que alguém não pode implementar isso:

  • código é armazenado em um formato compacto benéfico para o sistema em questão
  • como cada desenvolvedor abre o código, ele é formatado exatamente como ele deseja
  • quando terminarem, de volta ao formato compacto

Todo mundo está feliz, pois todos vêem seu próprio formato

Isso é tão difícil?

4
adolf garlic

Eu sou um tipo de cara de quatro espaços, as abas simplesmente não são consistentes.

3
Walter

A resposta é que não pode haver um único caractere de indentação adequado para cada situação. A formatação usando caracteres é inflexível e pode causar conflitos quando estilos diferentes são usados ​​em uma equipe.

O único método para formatar o código de maneira impecável e flexível com diferentes estilos de formatação é fazê-lo virtualmente, ou seja, sem nenhum caractere de recuo. O único editor de código que conheço que suporta isso é o usado no exemplo abaixo:

Para demonstrar formatação virtual, a captura de tela abaixo é de um editor XSLT * que usa esse método de indentação (também há um pequeno vídeo aqui ). Cada caractere no XSLT foi destacado em amarelo, para fins ilustrativos, para permitir que os únicos caracteres de tabulação ou espaço no conteúdo sejam vistos claramente. O recuo do código é tratado pelo sistema de renderização do editor, ajustando a margem esquerda (que possui um fundo branco).

enter image description here

Os únicos caracteres de espaço à esquerda precedem as linhas Books, porque esse é um conteúdo de texto literal, não um código, esses caracteres de espaço devem ser preservados.

Com a formatação virtual, você escolhe a largura do recuo para se adequar ao ambiente e ao estilo do recuo sem afetar nenhum caractere no arquivo de origem. Você pode até definir a largura do recuo como 0, se precisar de uma visualização nivelada do código, como mostrado abaixo:

enter image description here

Para contrastar isso com a formatação de caracteres de espaço, o mesmo XSLT aberto em um editor sem formatação virtual é transformado pelo formatador automático desse editor para:

enter image description here

Os blocos amarelos em branco maiores na captura de tela acima mostram claramente os caracteres de espaço adicionados pelo formatador do editor convencional. Infelizmente, agora eles não podem ser distinguidos do conteúdo real, portanto o XSLT precisaria ser modificado para corrigir esse problema.

Resumo

O XSLT é possivelmente um caso extremo, mas esse princípio é válido para muitas linguagens de programação: Os caracteres devem ser usados ​​para o conteúdo e um método alternativo procurado quando se trata de formatação.

** Divulgação: o XSLT Editor com formatação virtual foi desenvolvido por minha própria empresa *

3
pgfearo

Não mencionado até agora: existem idiomas (Python, Haskell) em que a indentação é importante. Mas 1 caractere conta como 1 caractere, seja um espaço ou uma guia, portanto, o recuo visto pelo compilador pode não ser o mesmo que você vê na tela se você usar as guias.

Portanto, em idiomas como Haskell, os espaços são obrigatórios. Nos Makefiles, os TABs são obrigatórios. Em todos os outros, é uma questão de gosto pessoal e hoje em dia não muito - todo editor decente tem um comando "(guia) para abas para espaços" e "(guia) para abas para espaços".

3
Ingo

Espaços ou guias - o que Atwood realmente diz é escolher uma coisa e ser consistente em seu projeto. O único santo graal da formatação de código é garantir que seja consistente, para que o psicopata que mantém seu código depois de você não se sinta obrigado a remediar a situação permanentemente.

Dito isto, se você estiver trabalhando em Python ou qualquer outra linguagem em que espaço em branco seja uma construção de programação real, não consigo imaginar usar abas.

3
Noah Goodrich

Aparentemente, as guias bagunçam as coisas no Delphi, então eu não as uso no Delphi.

No entanto, faço todo o resto usando o Emacs e sempre uso guias porque minhas guias vão exatamente para onde eu quero.

3
Peter Turner

Eu costumava usar espaços, mas ultimamente tenho usado guias porque é para isso que o Eclipse foi definido quando finalmente notei. Todos os outros desenvolvedores da minha equipe usam o Eclipse, por isso fazia sentido padronizar as guias quando percebemos que já as usávamos há muito tempo e não havia razão para se preocupar em mudar de espaço. Fiquei surpreso com o quanto isso não é problema.

Definir o tamanho da guia exibido como 3 ou 5 caracteres em seu IDE simplifica bastante a distinção entre seções de código que são recuadas por espaços (quase sempre 4 atualmente) e aquelas que são recuadas por tabulação).

2
Shabbyrobe

Muitos argumentos já foram apresentados, mas ninguém mencionou para onde iríamos no futuro .

Abas nem espaços!

Idealmente, o código deve ser considerado dados e não deve ser armazenado em nenhuma formatação de texto específica. Qualquer desenvolvedor pode aplicar sua própria visão preferida. Além disso, essa visualização não deve se limitar apenas ao texto , mas pode incluir tabelas, seletores de cores e fórmulas matemáticas.

Essa ideia não é exagerada. Foi o JetBrain Programação Orientada a Idiomas editor Meta Programming System (MPS) que primeiro me fez perceber que isso resolve toda a discussão, adicionando simultaneamente muitas possibilidades extras. (Sim, isso é possível com plug-ins de editor, mas o trabalho no texto adiciona diretamente tantas complexidades desnecessárias, em oposição à abordagem adotada pelo MPS.)

Ao contrário de tabulações e espaços, há poucas desvantagens que podem ser mencionadas para trabalhar diretamente em árvores de sintaxe abstratas . Tudo o que é necessário é que a tecnologia amadureça e se torne um produto comercialmente viável. Os primeiros sinais disso estão aparecendo. Amplamente desenvolvido com base no MPS, foi criado um editor de ações comerciais, - Realaxy .

Eu adoraria ver um dos grandes jogadores pular no conceito dessa tecnologia e ver o que acontece!

1
Steven Jeuris

Nem é melhor, nem é pior. A única coisa importante é ser consistente.

Se você é um time único, escolha o que quiser pessoalmente. Considere qual é o comportamento padrão do seu editor favorito, mas escolha o que quiser.

Se você estiver em uma equipe, faça o que a equipe faz. Período.

Nos meus vários trabalhos, usei dois espaços, quatro espaços, oito espaços, tabulações, espaços e tabulações, acho que também posso ter usado um espaço. Eu digo ao meu editor o que fazer, então não penso mais nisso, o editor elabora os detalhes.

A única outra coisa é ter certeza de escolher um editor inteligente. Emacs ou vi? Agora isso é uma guerra santa que estou disposto a lutar :-)

0
Bryan Oakley