A rolagem horizontal torna o código menos legível?


12

Bem, faz? É considerado uma má prática?

IMO, é menos legível. Eu odeio ter que rolar para a direita, depois voltar para a esquerda, direita, esquerda e assim por diante. Isso torna a codificação mais dolorosa e às vezes me confunde.

Por exemplo, sempre que eu estiver codificando uma cadeia longa, farei o seguinte ...

bigLongSqlStatement = "select * from sometable st inner join anothertable at" +
"on st.id = at.id" +
"and so on..." +
"and so on..." +
"and so on..."

15
sim. (e não se esqueça de recuar as linhas derramado)
Javier

2
Eu diria que sim. Pelo que vi, parece ser uma prática bastante comum entre os programadores de experiência eliminar a rolagem horizontal da maneira descrita. Até certo ponto, embora haja um pouco de preferência pessoal sobre este assunto ...
Kenneth

1
Eu posso navegar pelo código verticalmente e dentro das linhas em alta velocidade com algumas teclas; a rolagem horizontal é chata e lenta na comparação.

Colunas gerais tornam qualquer coisa menos legível. Isso já foi determinado várias vezes.
David Thornley 25/03

2
Concordo. O único problema é fazer com que todos concordem com a largura de seu editor. No código extra largo, geralmente apenas defino o wrap se tenho uma tonelada para ler.
Karl Bielefeldt

Respostas:


19

Sim, é verdade, tanto no sentido literal quanto no geral.

Eu gosto de fazer diferenças de código lado a lado, e linhas muito amplas tornam isso mais difícil:

http://i.stack.imgur.com/fWVuz.jpg

Idiomas como Scala com seqüências de caracteres triplas permitem construir uma sequência a partir de várias linhas sem a despesa de tempo de execução, aspas desagradáveis ​​e sinais de adição (como visto no seu exemplo) de unir partes de uma sequência.


11

Sim, acho que 80 caracteres por linha é razoável e comumente usado.


6

É uma pergunta realmente importante para mim! Eu trabalhei 7 meses em um laptop de 13 "com colegas com monitores de mesa de 24" e me vi passando muito tempo encurtando as linhas para terminar com algo legível.

80 colunas é um pouco pequena em muitos casos (exceto se você estiver trabalhando em um terminal com vi a única opção;)), mas mais de ~ 150 é demais (veja abaixo).

Isso é para a pura questão de 'legibilidade'.

Agora, para a parte de "boas práticas", muitas vezes considero que tais linhas longas são defeituosas, ou seja, ter uma parte que deve ser extraída em uma variável temporária ou duplicada, por exemplo (ObjectiveC, snippet comum na programação do iPhone) :

CGPoint point = CGPointMake(someOtherView.frame.origin.x + someOtherView.frame.size.width, someOtherView.frame.origin.x + someOtherView.frame.size.height);

Observe que isso pode se tornar ainda mais desagradável ao trabalhar com vetores ou matrizes tridimensionais.

Exemplo reescrito:

CGRect frame = someOtherView.frame;
CGPoint origin = frame.origin;
CGSize size = frame.size;
CGPoint point = CGPointMake(origin.x + size.width, origin.x + size.height);

Agora isso é adequado para uma tela menor, mais fácil para depurar usando um IDE ou para gravar na saída padrão e pode até ser mais rápido, dependendo do custo da chamada de método / propriedade. Isso é um pouco forçado, é claro, a maioria dos exemplos do mundo real é muito mais complexa ...


4

Nem sempre.

Apenas para adicionar uma visão alternativa, quando leio o código, muitas vezes posso entender o que a linha de código está fazendo sem ter que ler a linha inteira. Se eu posso ler o nome do método, mas os parâmetros do método se espalham pela tela, normalmente não estou preocupado, pois posso dizer apenas pelo nome do método qual é a intenção dessa linha de código. Se algumas linhas de código derramarem fora da tela, acho que a troca de ter que ocasionalmente (palavra importante lá) rolar horizontalmente vale a pena pelo código mais compacto. Às vezes, acho que o código de instrução única com várias linhas é perturbador, pois tenho que reunir mentalmente qual código acompanha essa instrução.

Freqüentemente, as linhas de código que se espalham horizontalmente têm seus bits importantes à esquerda (visíveis) e os bits menos importantes à direita (fora da tela); portanto, para mim, isso melhora a legibilidade, pois posso digitalizar o código para baixo, principalmente vendo o bits importantes em cada linha, em oposição à alternativa de ter os bits menos importantes de código de uma linha muito longa, ocupando o espaço à esquerda visualmente importante nas linhas a seguir.

Dito tudo isso, eu certamente não gostaria de rolar horizontalmente com muita frequência, mas acho isso menos problemático nesses dias de monitor de tela ampla.


2
Eu não sabia que alguns bits de programa são mais importantes que outros. Vou tentar melhorar minha produtividade dessa maneira: codificando apenas bits importantes.
Mouviciel

1
@mouviciel, Não é que o lado esquerdo do código seja mais importante, mas que semanticamente o lado esquerdo do código tenha mais significado para entender o que a linha de código faz do que o direito. Ao digitalizar o código, você costuma ler apenas o começo da linha para entender o que ele faz antes de passar para a próxima.
Chris Knight

1
Para mim, argumentos passados ​​para um método têm tanto significado quanto o nome do método. Deixar essas informações leva a adivinhar o que o código faz mais do que entendê-las.
Mouviciel

1

Sim.

Aliás uma dica. Se você estiver usando uma linguagem com seqüências de várias linhas (praticamente todas as linguagens de script as possuem) e incluir SQL longo, realmente ajuda a legibilidade colocar o SQL em uma sequência de várias linhas usando regras de formatação consistentes para o SQL. Consulte http://bentilly.blogspot.com/2011/02/sql-formatting-style.html para obter o estilo de formatação que eu uso.


1

Não, não faz.

Eu tenho um editor. Ele não apenas possui quebra de linha, mas também tem recuo de quebra de linha , o que (se a tela tiver 100 caracteres de largura) causaria

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

para aparecer como

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut 
    labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco 
    laboris nisi ut aliquip ex ea commodo consequat.

ou com qualquer nível de indentação definido como padrão para o idioma atual.

Linhas mais largas que minha tela nunca tornam o código menos legível em comparação com o código recuado manualmente.

edit: ooooh, eu sabia que essa resposta seria impopular :)


2
Bom para você. Mas o que você faria se tivesse que mudar para um editor que não tivesse esse recurso?

1
@dunsmoreb: Por que você mudaria para um editor tão desatualizado que não suporta nem quebra de linha (a menos que você trabalhe no código-fonte escrito há trinta anos e trabalhe em uma plataforma legada na qual você não tem a opção correta editor)?
Arseni Mourzenko

MainMa, estou me referindo ao seu recurso de indentação de quebra de linha.

@dunsmoreb: para ser justo, mesmo apenas mudança de linha é muito bom o suficiente se longas filas são incomuns
amara

7
Só porque seu editor pode quebrar uma linha, não significa que ele será o lugar mais lógico para facilitar a leitura.
31512

0

Certamente é sim. Há uma razão pela qual jornais e revistas usam colunas. A legibilidade é um fator significativo. Ao ler, nossos olhos examinam com relativamente pouco movimento de um lado para o outro. O efeito é permitir que nossos olhos examinem o que estamos lendo rapidamente.

Mesmo quando visíveis na tela, colunas largas forçam nossos olhos a percorrer rapidamente as páginas. Enquanto digitalizamos, realmente não compreendemos nada. Isso reduzirá significativamente a leitura e a compreensão. O efeito é semelhante às impressoras mecânicas antigas. Isso geralmente requer que vários caracteres nulos sejam inseridos após um retorno de carro para permitir tempo para o carro ou o cabeçote de impressão se reposicionar na próxima linha.

Além disso, o layout vertical geralmente é feito de forma a esclarecer o agrupamento do conteúdo da linha. Isso geralmente deve se aplicar apenas a condições lógicas compostas. Fórmulas longas podem ser melhor estruturadas como uma série de instruções. (O otimizador corrigirá qualquer sobrecarga extra e alguns otimizadores desistirão ou terão um desempenho ruim em fórmulas complexas.)

Identificadores com vários pontos que requerem linhas grandes indicam técnicas de codificação que devem ser retificadas.


0

As rodas do mouse facilitam a rolagem verticalmente rápida ... a rolagem horizontal é muito cara em comparação.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.