Por que o espaço em branco à direita é um grande problema? [fechadas]

116

Rastrear espaços em branco é um problema suficiente para programadores que editores como o Emacs têm funções especiais que o destacam ou se livram dele automaticamente, e muitos padrões de codificação exigem que você elimine todas as instâncias dele. Eu não tenho muita certeza do porquê. Posso pensar em um motivo prático para evitar espaços em branco desnecessários, e é que, se as pessoas não tiverem cuidado em evitá-lo, elas poderão alterá-lo entre confirmações, e então obteremos diferenças poluídas com linhas aparentemente inalteradas, apenas porque alguém removeu ou adicionou um espaço.

Isso já soa como uma boa razão para evitá-lo, mas quero ver se há mais do que isso. Então, por que rastrear espaços em branco é tão importante?

EpsilonVector
fonte
30
O espaço em branco à direita é realmente comprometer o ruído. Não consigo pensar em nenhum outro motivo.
yannis
17
Uma boa ferramenta diff deve ser capaz de ignorar o espaço em branco à direita (e à esquerda também, se você quiser). Afinal, o Emacs pode fazer isso, por que não suas ferramentas diff?
FrustratedWithFormsDesigner
4
Navegar até o final da string com o botão 'End' pode ser complicado, com muito espaço em branco à direita.
Iarek Kovtunenko
11
Eu acho que você está fazendo a pergunta da maneira errada. O contrário é: «quais são as vantagens de rastrear espaços em branco? ». A resposta se tornam bastante óbvio quando a pergunta direita;)
deadalnix
7
Talvez você deva tentar programar em espaço em branco . * 8 ')
Mark Booth

Respostas:

76

Razões que são importantes para mim:

  • Quando pressiono a tecla "Finalizar", espero que o cursor vá para o final da linha (dependendo do editor que estou usando e como está configurado) e espero poder começar a digitar imediatamente. Se o cursor chegar lá e eu tiver que excluir 3 ou 4 caracteres, é irritante. Especialmente se for inconsistente em todo o (s) arquivo (s).

  • Quando tenho literais de string que abrangem várias linhas, o espaço em branco à direita pode fazer com que a string de saída pareça incorreta quando usada.

Embora não seja estritamente programado, o espaço em branco pode atrapalhar seriamente a entrada de dados, se houver um rastreamento / avanço em um arquivo que será analisado e usado como entrada para outra coisa. Isso acontece mais quando um arquivo de entrada limpo e gerado é sujado por alguém editando-o no Excel ou algo assim e, em seguida, os espaços em branco à esquerda (e outros problemas de formatação) podem aparecer.

FrustratedWithFormsDesigner
fonte
8
O ponto 1 é um problema do seu editor, não do espaço em branco à direita.
Marjan Venema
33
@MarjanVenema: Sim, um editor pode ser projetado para ir para o último espaço não em branco, mas você nunca saberia sobre o espaço em branco à direita (a menos que tenha sido indicado de outra maneira - provavelmente também acho estranho que o END não vá para o fim de linha, que é o que estou acostumado). O que seria um problema com literais de strings de várias linhas. Portanto, o editor precisa saber que, em um literal de cadeia de várias linhas, END deve ir para o último caractere, incluindo espaço em branco. O editor que estou usando não é tão inteligente.
FrustratedWithFormsDesigner
2
Eu acrescentaria que a seleção com o mouse é difícil de fazer sem selecionar espaços extras e isso pode importar se for para uma pasta recortada. Ou que gere ruído ao confirmar (eventualmente confila!) Por nada. Não é grande coisa, mas muitas pequenas aborrecimentos. Dá a sensação de que o desenvolvedor anterior era preguiçoso e espera que você saia na bagunça dele.
deadalnix
1
@deadalnix: é claro, é por isso que você precisa de um bom editor com opções para atender às preferências da maioria das pessoas. E, portanto, o ponto 1 é um problema com o editor e não o espaço em branco à direita.
Marjan Venema
1
O ponto 1 é precisamente o motivo pelo qual prefiro ter um estilo particular de espaço em branco à direita: linhas em branco sendo recuadas com o código que separam. Isso permite que o novo código a ser inserido imediatamente sem ter que travessão.
Xiong Chiamiov
29

Eu realmente odeio deixar espaços em branco, mas o motivo exato é um pouco vago.

Acho que a origem desse sentimento não está na programação, mas no campo da editoração eletrônica. Você já digitou um documento por outra pessoa que precisava ser digitado em uma publicação? Em todas as publicações modernas, especialmente ao usar colunas, é personalizado que as frases se sigam sequencialmente em um parágrafo, sem iniciar uma nova linha para cada frase. Bem, quando há espaço em branco à direita, é preciso muito mais esforço para acertar (muita pesquisa e substituição de ações que eliminam espaços duplos, etc ...).

Outras razões (na programação), não boas razões, eu sei, mas elas incomodam minha psique subconsciente de maneira tão intensa e agravante que me obrigam a eliminá-la:

  • Requer mais espaço de armazenamento do que o necessário
  • O analisador precisará pular um caractere extra sem um bom motivo ao compilar
  • Alguns editores podem adicionar uma linha em branco extra quando o WordWrap estiver ativado e o espaço à direita não couber

Sim, sim, eu sei! Eu sei, essas são razões inúteis. Eu não sou perfeccionista, mas ... bem, talvez eu seja?

A última razão pela qual consigo pensar é no movimento inconsistente do cursor. Parece que o cursor está pairando no ar no final de uma linha, cada passo à direita pode fazer com que ele caia ou paire ainda mais em uma extensão desconhecida, apenas se sente instável (como aqueles blocos invisíveis ou desaparecidos que Super Mario costumava pular).

Provavelmente posso ser diagnosticado com trilhaspacefobia?

Louis Somers
fonte
Não é o meu campo, mas me parece estranho ... que tipo de sistema de digitação você usa na editoração eletrônica, que não ignora espaços múltiplos / à direita por padrão ? Eu pensei que o LaTeX e a maioria das linguagens de programação o faziam em todos os lugares, exceto no lixo WYSIWYG no nível do consumidor.
leftaroundabout
Adobe InDesign (isso também se enquadra no lixo WYSIWYG no nível do consumidor?). Ele ignorará os espaços à direita, sim, mas substituirá todos os feeds de linha por espaços em um parágrafo e você terminará com espaços duplos (que não são ignorados); em seguida, será necessária uma substituição extra para eliminá-los.
Louis Somers
"Desktop Publishing" não é algo que você faz com um "sistema de composição tipográfica".
rakslice
22

Muitas dessas respostas quase tocam no motivo de ser ruim para mim, mas basicamente: "quebra" os editores de texto. Minha experiência é com vim.

O Vim foi projetado para que ações comuns sejam mapeadas para as letras de maneira tão limpa que você nem precise pensar em qual letra ou combinação de teclas deve ser atingida. Várias teclas de atalho permitem que o cursor pule o texto tão rapidamente que são necessárias apenas algumas teclas para chegar aonde você quiser. Até coisas como dobrar blocos de código são rápidas, já que você pode pressionar END ou $ para pular para o final da linha, onde o cursor deve se sobrepor {ou} ou (ou) ou algo assim - não há necessidade de interromper seu fluxo de pensamento para tenha uma ideia na tela.

Mas então surge um espaço em branco à direita, e os movimentos do cursor não são mais previsíveis. Seu processo de digitação está sendo interrompido porque algo que você não pode ver está afetando aonde o cursor vai, então você precisa interromper sua linha de pensamento para enviá-lo para onde deveria estar.

Você já reparou como as pessoas ficam aborrecidas quando estão realmente focadas em uma tarefa e alguém as interrompe? Sim, encontrar espaços em branco à direita quando menos se espera é exatamente assim.

Como nota de rodapé, também notei que as pessoas que não se importam com o espaço em branco à direita são as que usam o mouse para navegação e tendem a ser digitadoras mais lentas por causa disso ...

Izkata
fonte
2
Como nota de rodapé, a velocidade de digitação não tem nada a ver com o uso ou não do mouse para navegação. Alguma navegação é perfeitamente adequada para um mouse. ; p
Steven Jeuris
2
Se você usa o vim, pode remover rapidamente todos os espaços em branco à direita:%s/ *$//
Giorgio
1
@Giorgio Eu sei, mas não posso fazê-lo apenas a qualquer hora, porque ele conta como uma mudança no controle de versão
Izkata
@izkata: Verdadeiro. Eu reformato os arquivos que tenho que alterar antes de fazer o check-in, mas essa é uma batalha perdida se outros desenvolvedores continuarem verificando arquivos com espaços em branco à direita.
Giorgio
17

Surpreendentemente, a resposta mais óbvia está faltando: o espaço em branco à direita pode e irá produzir bugs difíceis de encontrar.

A situação mais óbvia são as seqüências multilinhas. Python, JavaScript e Bash são alguns exemplos das linguagens que podem ser afetadas por isso:

print("Hello\·
····World")

produz:

  File "demo.py", line 1
    print("Hello\
                 ^
SyntaxError: EOL while scanning string literal

que é de alguma forma enigmática e difícil de resolver se o editor não estiver configurado para exibir caracteres de espaço em branco.

Embora o destaque da sintaxe possa ajudar a evitar esses casos, é ainda mais fácil não ter o problema em primeiro lugar, não deixando espaços em branco no final das linhas. É por isso que alguns verificadores de estilo emitem um aviso ao encontrar espaços em branco à direita, e alguns editores os cortam automaticamente.

insira a descrição da imagem aqui

Ilustração: o destaque da sintaxe pode ajudar a evitar o espaço em branco à direita em situações nas quais pode levar a erros, mas não confie apenas nele.

Outro contexto, brevemente mencionado em uma resposta anterior , são os dados armazenados em arquivos.

Por exemplo, arquivos CSV que contêm espaços em branco à direita podem causar inconsistência de dados, o que também é muito difícil de detectar: ​​analisadores compatíveis com padrões cortam o espaço em branco (o padrão indica que o espaço em branco à esquerda ou à direita é irrelevante, a menos que seja delimitado com aspas duplas), mas alguns analisadores podem se comportar mal e manter o espaço em branco como parte de um valor.

Outros formatos personalizados podem considerar especificamente que espaço em branco é a parte do valor, levando a situações consistentes, mas ainda difíceis de depurar.

Arseni Mourzenko
fonte
14

Recentemente, passei um dia procurando um bug que acabou sendo um espaço em branco inesperado nos dados.

ddyer
fonte
13
Eu acho que é um bug; o processamento de código de entrada gerada por humanos deve descartar espaços em branco à direita e, geralmente, espaços em branco à esquerda também devem ser descartados.
kevin Cline
@kevincline - Deve ser pelo menos. Se não estiver visível na tela ou na impressão, não quero pensar nisso.
Rook
6
Como você passou o dia procurando um bug, os espaços em branco à direita são um grande problema? Edite sua resposta para ser mais geral do que isso. Adicione alguns antecedentes, argumentação, ... Eu pessoalmente nunca tive problemas de espaço em branco, mas não uso isso como conclusão de que eles também não são um problema.
precisa
2
@Steven Trailing espaço em branco causou um erro que era difícil de rastrear. Parece uma boa resposta para mim. Você pode imaginar como algum código de análise de dados pode ser quebrado nessa situação.
Will Sheppard
Eu removi o espaço em branco no final dos dados e agora um teste falha. Você é responsável por isso. Qual o seu nome? Para onde devo enviar a conta?
Thomas Weller
8

Quando seleciono o código-fonte do programa para copiá-lo e colá-lo (ou excluí-lo), acho um pouco irritante ver todo o espaço em branco extra irregular no final das linhas: já que preciso ler o código enquanto o seleciono , o espaço em branco à direita é um ruído desnecessário. Exemplo (pontos representam o espaço em branco):

if (fp)........
{....
    fclose(fp);.
}
else
{.....
    prinft("File is NULL\n");
}..

Este exemplo é artificial, mas já vi muitos códigos parecidos com este.

Giorgio
fonte
7

Além do problema óbvio de que ele quebra a análise em certos casos? Como outro pôster observou, pode causar erros sutis e difíceis de rastrear. Espaço em branco nem sempre é insignificante. Em alguns casos, o espaço em branco à direita pode alterar significativamente o significado de uma linha de código ou dados.

Na maioria dos casos, há espaço em branco para formatar o código para leitores humanos. O espaço em branco à direita pode indicar várias coisas, incluindo:

  • Uma declaração incompleta;
  • Um comentário ausente;
  • Uma edição equivocada; ou
  • Edição desleixada.

Dois deles podem resultar em funções incorretas e outro pode dificultar a compreensão do código.

BillThor
fonte
4

Existem linguagens de programação sensíveis ao espaço em branco da linha final. Por exemplo, um script TCL emitirá um erro se houver um espaço em branco no final de uma linha.


fonte