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:
call_some_function(parameter1,
parameter2,
parameter3,
parameter4,
parameter5,
parameter6,
parameter7);
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:
a.m = 9; // this is the slope
a.i = 4; // this is the intensity
a.x = 1; // this is the x-intercept
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:
a.m = 9; // this is the slope
a.i = 4; // this is the intensity
a.x = 1; // this is the x-intercept
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.
tab
. Se você não pode configurá-lo no seu editor favorito, precisa de um editor melhor.