Eu estava lendo o artigo da wikipedia sobre estilo de programação e notei algo em um argumento contra código alinhado verticalmente:
Confiança na fonte mono-espaçada; A formatação tabular assume que o editor usa uma fonte de largura fixa. A maioria dos editores de código modernos oferece suporte a fontes proporcionais, e o programador pode preferir usar uma fonte proporcional para facilitar a leitura .
Para ser sincero, acho que nunca conheci um programador que preferisse uma fonte proporcional. Nem consigo pensar em boas razões para usá-las. Por que alguém prefere uma fonte proporcional?
ide
coding-style
fonts
Jason Baker
fonte
fonte
[citation needed]
:)Respostas:
Pontos comuns contra fontes proporcionais, comentou.
Pontos a favor de fontes proporcionais
m
no mesmo espaço de umn
ou umi
torna realmente desafiador projetar uma fonte monoespaçada boa e legível .rnW
eIll
no presente Proggy Limpar imagem para um exemplo de fonte espaçamento feito de errado.Pessoalmente, eu tenho usado tanto a fonte 'Ubuntu' quanto o WenQuanYi Zen Hei Mono com prazer e me vejo incapaz de preferir uma à outra. :)
Ubuntu 10 e WenQuanYi Zen Hei Mono 9, comparados. Não há vencedor claro aqui, se você me perguntar.
Dito isto, as fontes são como comida. Alguns como eles são bem arredondados, outros como quentes e picantes - não há uma fonte certa, ou todos nós a estaríamos usando agora. Yay para a escolha!
fonte
Há uma razão que torna praticamente impossível o uso de fontes diferentes da monoespaçada para codificação, mas não foi mencionado em outras respostas: seleções retangulares .
Esse recurso, geralmente pouco útil e pouco conhecido ao trabalhar com texto comum, é essencial para os desenvolvedores. Você pode imaginar vários cenários: remover
//
comentários em várias linhas, adicionar parênteses ou outros caracteres etc. Isso é ainda mais valioso com o suporte avançado a seleções retangulares, como no Visual Studio 2010, onde você não pode apenas selecionar e remover texto, mas selecione e substitua-o.Vamos dar um exemplo:
Neste código legado, desejo substituir a classificação no código por um método que carregará minha classificação nos próprios sites do Stack Exchange, podendo sempre ter dados atualizados. Comecei a refatorar a
MyReputation
propriedade e agora quero remover a inicialização no escopo. Imagine que eu não tenho quatro, mas todos os sites da 84 SE.Aqui está o que acontece ao usar o Consolas , uma fonte monoespaçada. Pressiono Backspace, e é tudo, posso gastar o tempo restante para fazer algo realmente útil.
E aqui a mesma coisa com Segoe UI . Ai!
fonte
CTRL-D
SublimeText e VSCode,ALT-J
nos editores IntelliJ / JetBrains. Em seguida,SHIFT-CTRL-RIGHT ARROW
para expandir a seleção para o próximo token à direita e pronto. A principal vantagem é que ninguém precisa alinhar as coisas para editar. Desvantagem, se você tiver algo alinhado, não será mais.Eu costumava usar uma fonte proporcional, principalmente porque acho que a pontuação é realmente mais fácil de diferenciar, mas com o tempo desisti porque ninguém mais faz isso e todo mundo inconscientemente assume fontes mono espaçadas (como o artigo da wikipedia menciona, tentando fazer tabular formatação, arte ascii nos comentários e assim por diante).
Além disso, os problemas no Visual Studio , que a Microsoft não deseja corrigir, basicamente tornam impossível o uso de fontes proporcionais bem projetadas.
fonte
Pessoalmente, eu não ligo. Contanto que você mantenha minhas guias alinhadas e a fonte legível, eu não me importaria menos se utilizasse espaçamento monoespaço, proporcional ou outro espaçamento fora da parede. Só não comece a substituir minhas abas por espaços, e você não terá nenhuma briga comigo.
fonte
Eu uso uma fonte proporcional (Arial é a melhor que encontrei até agora, Verdana é a segunda colocada) e, sinceramente, ainda estou confuso que as pessoas usem fontes de largura fixa; por que você gostaria de sacrificar a legibilidade assim? Eu poderia entender se a formatação tabular era desejável, mas não é, pois cria um pesadelo de manutenção, independentemente da fonte.
fonte
Lembro-me que no livro de Bjarne Stroustrup, The C ++ Programming Language , fontes espaçadas de forma pró-ativa foram usadas como código. (Não consigo encontrar páginas de amostra na web)
Não me lembro das razões exatas, mas acho que ele mencionou essa e outra mudança (acho que a própria linguagem C ++) como uma nova introdução nesse livro.
Pessoalmente, prefiro os de espaço fixo. Consolas é o meu favorito.
fonte
Para idiomas com linhas curtas e muito espaço aberto, prefiro fontes monoespaçadas. Acho que as fontes de largura variável podem melhorar a legibilidade quando você tem linhas longas e sintaxe densa.
O problema com a maioria das fontes proporcionais é que elas não foram projetadas para programação. Esta página mostra algumas fontes que foram.
fonte
Os ambientes smalltalk, como o Pharo, usam fontes proporcionais e, devido ao estilo do idioma, parecem muito bons lá. Mas em linguagens de estilo C como Go ou outras como Erlang ou Python, prefiro fontes monoespaçadas.
fonte
Passei algum tempo encontrando uma fonte boa e legível para o Eclipse há algum tempo, e no XP usei Verdana por algum tempo. Consolas decidiu isso porque é realmente excelente para a programação.
Estas são as minhas descobertas:
Por isso, descobri que não valia a pena o trabalho para mim.
Nota sobre o alinhamento e outros layouts: configurei o Eclipse para formatar automaticamente cada arquivo a cada salvamento, para que todos os layouts sofisticados sejam redefinidos automaticamente. O Eclipse usa guias em vez de vários espaços e eles podem ser posicionados corretamente, mesmo com fontes proporcionais. Portanto, os layouts do formatador podem se sobrepor, mas usamos a configuração padrão do formatador que não possui isso.
Acredito que a aplicação da formatação automática para todos os salvos minimiza os falsos positivos no sistema de controle de origem, ao fazer análises forenses.
fonte
Nunca, porque as fontes monoespaçadas me permitem comparar diferentes atributos.
Comparar:
name1 = ["William", "Shakespear", 1564, "Peotry"]
name2 = ["John", "Locke", 1632, "Filosofia"]
name3 = ["Jonathan", "Littell", 1967, "Prosa"]
Para:
As fontes proporcionais simplesmente não podem colocar atributos equivalentes exatamente um acima do outro.
fonte
Embora eu sinta que as fontes proporcionais são mais bonitas, em algumas delas, especialmente as fontes sem serifa, é impossível ver a diferença entre um "eu" e um "l". Espere, como nomeei essa variável novamente?
fonte
'' vs "