Talvez eu esteja sozinho nisso, mas poucas coisas me incomodam como pessoas recuando usando espaços em vez de tabulações. Como a digitação é SpaceSpaceSpaceSpacemais fácil e intuitiva do que a digitação Tab? Claro, a largura da guia é variável, mas é muito mais indicativa de espaço de indentação do que espaços. O mesmo vale para o retrocesso; retroceder uma ou quatro vezes?
Por que linguagens como Python recomendam o uso de espaços sobre guias?
indentation
Naftuli Kay
fonte
fonte
tab
. Se você não pode configurá-lo no seu editor favorito, precisa de um editor melhor.Respostas:
Consistência, principalmente.
Além disso, ocasionalmente surge algo que realmente usa o espaço em branco - como Python: Diga-me, o que acontecerá se eu executar o seguinte trecho de código?
Existem os casos frustrantes em que o editor de um desenvolvedor tem guias definidas para 8 espaços, e outro as define em 4 e alguém usa 5 por algum motivo estranho ... Pode parecer perfeitamente normal em uma estação de trabalho, mas depois é verificado para O SVN e outras pessoas atualizam, eles verão uma bagunça horrível.
Portanto, essas são duas boas razões para sempre sermos consistentes, sejam espaços ou tabulações.
Porém, os espaços permitem muito mais controle sobre o recuo do que as guias e não exigem nenhuma configuração especial nos editores para que ele funcione. (Embora possa ser mais fácil - por exemplo, no vim, use apenas
set expandtab
para inserir espaços sempre que você clicar na guia)EDIT: E de maneira divertida, o site parece ter normalizado minhas guias em espaços para que o navegador possa exibi-lo corretamente. Clique em "editar" para visualizar o original, guias incluídas;)
fonte
Esta é uma boa discussão sobre recuo e espaço em branco no Python; do artigo:
Quanto ao seu argumento sobre pressionar a barra de espaço ou a tecla backspace 2 ou mais vezes, uma vez que a maioria dos editores de código-fonte inserirá um número configurável de espaços com um único toque na tecla tab e, semelhantemente, o recuo, não há mais teclas pressionadas quando usando espaços para recuo.
Para mim, prefiro espaços porque o código é sempre exibido com a mesma quantidade de indentação, esteja sendo visualizado em um IDE
less
ou no Bloco de Notas; ou seja, os espaços são mais portáteis.fonte
No Python, o recuo controla o fluxo do programa e, portanto, é vital.
Se você pegar o código formatado com guias e copiá-lo para que as guias sejam alteradas ou perdidas, a estrutura do código é destruída. Os espaços são sempre espaços = muito mais seguros.
Se o desgaste da barra de espaço o preocupa, provavelmente o seu editor poderá ser configurado para converter automaticamente as guias em espaços.
fonte
.vimrc
para mim :)set softtabstop=4
, e o TAB e o BACKSPACE usarão quatro espaços como uma guia. (Bem, para cada tabstop, tratando a largura como espaços 4)Os espaços sempre devem ser usados, porque as guias por si só não são suficientemente flexíveis para muitos estilos, e a mistura de guias e espaços (quase) sempre produz uma bagunça absoluta.
Para um exemplo de um estilo que geralmente precisa de espaços, considere algo como:
A menos que você queira renomear todas as suas funções como um múltiplo exato do tamanho da guia (menos uma para os parênteses), as guias por si só não farão isso.
Quanto à mistura de abas e espaços, você quase imediatamente encontra um problema sério: as abas não são constantemente expandidas da mesma maneira. Alguns softwares tratam uma guia como equivalente a um número específico de espaços. Outro software expandirá um módulo de guia em um número específico de espaços - por exemplo, um item após um guia sempre inicia com um número de coluna que é múltiplo de (digamos) 8.
Mesmo que você possa garantir que os espaços não se misturem às suas guias, você ainda tem um problema: as guias também são mal reproduzidas com fontes de largura variável. Esse problema surge quando (por exemplo) você deseja comentários finais alinhados:
Como estão agora, tudo isso se alinha perfeitamente. Visto com uma fonte de largura variável, no entanto, as coisas ficam feias. Com espaços, os comentários podem (com frequência) ficar um pouco desalinhados. Com abas, no entanto, o desalinhamento geralmente se torna bastante radical:
De repente, a pequena diferença de largura entre o 'i' e o 'm' ou 'x' em nossa fonte de largura variável foi ampliada para uma parada de tabulação inteira.
O ponto principal é que quase qualquer alteração na maneira como você visualiza o código com guias, por mais trivial que seja, pode e geralmente produz uma bagunça ilegível.
Para responder às suas outras perguntas: outras já apontaram, mas não consigo imaginar alguém em um editor de programação (ou quase tudo) usando a barra de espaço para inserir os espaços. Portanto, sua pergunta sobre: "digitar spacespacespacespace" é irrelevante porque ninguém faz isso de qualquer maneira. Da mesma forma com o espaçamento entre as costas: é difícil imaginar um editor que exija pressionar BkSpcquatro vezes para ir para uma parada de tabulação anterior, então (novamente) a pergunta é irrelevante.
Bottom line: guias são muito bem se você (e só você) vai sempre olhar para o seu código, e você só fazê-lo com um único editor que você não reconfigure (em tudo!) Essas condições, no entanto, estão tão perto de impossível imponha que haja apenas uma resposta razoável: nunca use guias.
fonte
O grande problema é a inconsistência da largura da "guia", às vezes eles são renderizados como quatro espaços, às vezes oito. Em muitos editores, você pode configurá-los para qualquer coisa de 1 a 9 espaços.
Portanto, isso transforma um simples editor WYSWYG em O que você vê é o que alguém PODE obter.
É um problema específico para o Python, mas também é um problema em qualquer uma das linguagens "colchetes", pois o recuo é usado para transmitir significado aos leitores humanos e as guias desarrumadas dificultam a leitura do código.
fonte