it-swarm-es.com

¿Alguien prefiere las fuentes proporcionales?

Estaba leyendo artículo de Wikipedia sobre estilo de programación y noté algo en un argumento contra el código alineado verticalmente:

Confianza en la fuente monoespaciada; el formato tabular supone que el editor usa una fuente de ancho fijo. La mayoría de los editores de código modernos admiten fuentes proporcionales, y el programador puede preferir usar una fuente proporcional para facilitar la lectura .

Para ser sincero, no creo haber conocido a un programador que prefiera una fuente proporcional. Tampoco se me ocurren buenas razones para usarlos. ¿Por qué alguien preferiría una fuente proporcional?

53
Jason Baker

Puntos comunes contra fuentes proporcionales, comentadas.

  • No puede alinear con precisión el código verticalmente con fuentes proporcionales. Quiero decir, usted podría alinear con precisión el código verticalmente con las fuentes proporcionales, si todo el mundo usara tabulaciones elásticas , pero por desgracia ...
  • Algunas fuentes proporcionales hacen que sea difícil distinguir algunos grupos de caracteres. (por ejemplo, mrnm). Sin embargo, no todas las fuentes de programación son perfectas: Courier New tiene idénticas 'O' y '0' e idénticas '1' y 'l'.
  • Algunos IDE tienen poca compatibilidad con fuentes de ancho no fijo (como mencionado anteriormente Visual Studio o IDLE de Python). En algunos contextos, tampoco puedes usar uno. (por ejemplo, terminales).
  • Elegir una fuente proporcional para la codificación te llevará a interminables guerras santas. Aquí, sin embargo, el problema existe entre el teclado y la silla.

Puntos a favor de las fuentes proporcionales

Personalmente, he estado usando tanto la fuente 'Ubuntu' y WenQuanYi Zen Hei Mono con placer y no puedo preferir uno al otro. :)

Ubuntu
WenQuanYi Zen Hei Mono
Ubuntu 10 y WenQuanYi Zen Hei Mono 9, comparados. No hay un ganador claro aquí, si me preguntas.

Dicho esto, las fuentes son como la comida. A algunos les gustan bien redondeados, a otros les gusta picante y picante: no hay una fuente correcta, o todos la usaríamos en este momento. Yay para elegir!

47
badp

Hay una razón que hace que sea prácticamente imposible usar fuentes que no sean monoespacios para la codificación, pero no se mencionó en otras respuestas: selecciones rectangulares.

Esta característica, a menudo no muy útil y poco conocida cuando se trabaja con texto ordinario, es esencial para los desarrolladores. Puede imaginar una multitud de escenarios: eliminar // comenta en varias líneas, agrega paréntesis u otros caracteres, etc. Esto es aún más valioso con el soporte avanzado de selecciones rectangulares, como en Visual Studio 2010, donde no solo puede seleccionar y eliminar texto, sino seleccionarlo y reemplazarlo.

Tomemos un ejemplo:

private IEnumerable<SELove> StackExchangeRocks()
{
    var howILoveSEWebsites = new []
    {
        new SELove { SiteName = "Stack Overflow", MyReputation = 5269,  MyRating = Rating.Outstanding, },
        new SELove { SiteName = "Programmers",    MyReputation = 16937, MyRating = Rating.Outstanding, },
        new SELove { SiteName = "Super User",     MyReputation = 650,   MyRating = Rating.QuiteGood,   },
        new SELove { SiteName = "Server Fault",   MyReputation = 489,   MyRating = Rating.Good,        },
        // Initialize other websites here.
    };

    return howILoveSEWebsites.OrderByDescending(c => c.MyRating);
}

private class SELove
{
    public string SiteName { get; set; }
    public int MyReputation { get; set; }
    public Rating MyRating { get; set; }
}

private enum Rating
{
    Outstanding,
    Good,
    QuiteGood,
}

En este código heredado, quiero reemplazar la calificación en código por un método que cargará mi calificación de los sitios web de Stack Exchange, pudiendo tener siempre datos actualizados. Comencé a refactorizar la propiedad MyReputation, y ahora quiero eliminar la inicialización, en su alcance. Imagine que no tengo cuatro, sino los 84 sitios web de SE.

Esto es lo que sucede cuando se usan Consolas , una fuente monoespacial. Presiono Retroceso, y eso es todo, puedo pasar el tiempo restante para hacer algo realmente útil.

The image shows that with Consolas, the rectangle selects reputation property.

Y aquí lo mismo con Segoe UI . ¡Ay!

The image shows that with Segoe UI, some reputation properties are selected only partially, while on other lines, the beginning of rating property is selected.

30
Arseni Mourzenko

Solía ​​usar una fuente proporcional, principalmente porque encuentro que la puntuación es realmente más fácil de diferenciar, pero con el tiempo me di por vencido porque nadie más lo hace y todos inconscientemente asumen fuentes mono espaciadas (como menciona el artículo de Wikipedia, tratando de hacer tablas) formato, arte ascii en comentarios, etc.).

Además, problemas en Visual Studio , que Microsoft no quiere arreglar, básicamente hacen que sea imposible usar fuentes proporcionales bien diseñadas de todos modos.

15
Dean Harding

Personalmente no me importa. Mientras mantenga mis pestañas alineadas y la fuente legible, no podría importarme menos si uso monoespacio, proporcional o algún otro espacio fuera de la pared. Simplemente no empieces a sustituir mis pestañas con espacios, y no tendrás que pelear conmigo.

9
Aeo

Uso una fuente proporcional (Arial es la mejor que he encontrado hasta ahora, Verdana es una finalista cercana) y, sinceramente, todavía me desconcierta que la gente use fuentes de ancho fijo; ¿por qué querrías sacrificar la legibilidad así Podría entender si el formato tabular fuera deseable, pero no lo es, ya que crea una pesadilla de mantenimiento independientemente de la fuente.

6
rwallace

Para los idiomas que tienen líneas cortas y mucho espacio abierto, prefiero las fuentes monoespaciadas. Me parece que las fuentes de ancho variable pueden mejorar la legibilidad donde tienes líneas largas y sintaxis densa.

El problema con la mayoría de las fuentes proporcionales es que no fueron diseñadas para la programación. Esta página muestra algunas fuentes que estaban.

Trim font

4
user287424

Recuerdo que en el libro de Bjarne Stroustrup El lenguaje de programación C++ , se utilizaron fuentes con espacio propio para el código. (No puedo encontrar ninguna página de muestra en la web)

No recuerdo las razones exactas, pero creo que mencionó este y otro cambio (creo que el lenguaje C++ en sí) como una nuevas introducciones en ese libro.

Personalmente, prefiero los de espacio fijo. Consolas es mi favorito.

4
Nivas

Los entornos Smalltalk como Pharo usan fuentes proporcionales y, debido al estilo del lenguaje, se ve muy bien allí. Pero en lenguajes de estilo C como Go u otros como Erlang o Python prefiero las fuentes monoespaciadas.

2
themue

Pasé algún tiempo buscando una fuente buena y legible para Eclipse hace un tiempo, y bajo XP Usé Verdana durante bastante tiempo. Consolas lo resolvió porque es realmente excelente para la programación.

Estos son mis hallazgos:

  • La mayoría de las fuentes proporcionales están diseñadas para la prosa y solo con una pequeña puntuación (que a su vez suele ser uno o rara vez dos caracteres). La familia de lenguajes C tiene lotes de puntuación, que en mi opinión simplemente no se ve bien y es más difícil de leer de lo necesario.
  • Los caracteres de longitud variable significan que la longitud de las líneas varía. Esto hace que sea casi imposible adivinar dónde terminará el cursor al navegar con los botones de flecha. Esto me pareció molesto.
  • El espacio vertical también es importante. Esto normalmente no es algo que se pueda anular fácilmente, y la mayoría de las fuentes proporcionales tienen menos espacio entre las líneas de lo que quisiera.
  • Muy pocos IDE se prueban con fuentes proporcionales. Esto deja espacio para errores sutiles, como colocar el cursor en la ubicación incorrecta, volver a pintar caracteres de forma incorrecta y similares.

Por lo tanto, descubrí que no valía la pena para mí.


Nota sobre la alineación y otros diseños: he configurado Eclipse para formatear automáticamente cada archivo en cada guardado, por lo que todos los diseños elegantes se restablecen automáticamente. Eclipse usa pestañas en lugar de múltiples espacios y estos se pueden colocar correctamente incluso con fuentes proporcionales. Por lo tanto, los diseños del formateador pueden estar uno encima del otro, pero utilizamos la configuración de formateador estándar que no tiene eso.

Creo que la aplicación del formato automático para todos en cada guardado minimiza los falsos positivos en el sistema de control de fuente, al hacer análisis forenses.

2
user1249

Nunca, nunca, porque las fuentes monoespaciadas me permiten comparar diferentes atributos.

Comparar:

name1 = ["William", "Shakespear", 1564, "Peotry"]

name2 = ["John", "Locke", 1632, "Filosofía"]

name3 = ["Jonathan", "Littell", 1967, "Prose"]

Para:

name1=["William",  "Shakespear", 1564, "Peotry"     ]
name2=["John",     "Locke",      1632, "Philosophy" ]
name3=["Jonathan", "Littell",    1967, "Prose"      ]

Las fuentes proporcionales simplemente no pueden colocar atributos equivalentes exactamente uno encima del otro.

0
Adam Matan

Si bien creo que las fuentes proporcionales son más bonitas, en algunas de ellas, especialmente las fuentes sans-serif, es imposible ver la diferencia entre una "I" y una "l". Espera, ¿cómo llamé a esa variable nuevamente?

0
Billjk