Я даже не рассмотрел кодирование в пропорциональном шрифте прежде. Таким образом в интересах науки я просто переключил своего редактора, чтобы дать ему движение.
Вот несколько наблюдений после фиксации нескольких легких билетов:
!
оператор в if (!foo)
. (если (! нечто), посмотрите!) {}[]()
по сравнению с {} [] ()) $@%
по сравнению с $ %) '"!;:,.
по сравнению с'"!;:.) 0Oo iIl
по сравнению с 0Oo iIl) Там некоторые положительные точки, все же. По общему признанию я только использовал его на некоторое время, но существуют, конечно, некоторые аспекты, которые работают немного лучше с пропорциональными шрифтами:
, я обновлю этот ответ снова завтра (предполагающий, что я могу сделать его в течение всего дня как это!)
Я думаю, точно так же, как проблема символов табуляции усложняющий фактор - когда что-то располагается с отступом в целях выравнивания, и у кого-то еще есть различные предпочтения. Вещи неправильно выравниваются.
Главным образом в целях выравнивания (такой как тогда, когда объявления параметра функции охватывают несколько строк и Вы хотите выстроить в линию их или выстраивающиеся в линию комментарии, и т.д.).
Используя пробелы для добавления отступа была бы проблема, как только Вы стали более глубокими, чем один уровень.
Я лично нахожу моноширинные шрифты легче читать в редакторах кода. Конечно, я являюсь почти слепым. Это могло бы иметь значение. Я в настоящее время выполняю консольный шрифт в 15 точках с темным фоном с высококонтрастными буквами.
По природе кода, а не регулярного языка, более хорошо выстроить в линию его правильно. Кроме того, в редактировании кода иногда Вы хотите заблокировать выбор, копию блока и вставку блока. В Visual Studio можно сделать выделение блока при помощи клавиши ALT при выполнении выбора мыши. Это могло бы отличаться в различных редакторах, но я всегда находил, что опция в редакторе, очень важном в некоторых случаях, и это не работало бы очень хорошо, если Вы не используете моноширинный шрифт.
Я подозреваю, что моноширинные шрифты были предпочтением программиста как переносом с основанных на тексте дней DOS.
, С другой стороны, я, сам, попробовал Verdana и пару других рекомендуемых пропорциональных шрифтов, но я не мог иметь дело с изменением. Мой глаз слишком хорошо обучен моноширинному. Языки, тяжелые на символах, как: C/C++, C#, Perl, и т.д., выглядит слишком отличающимся для меня. Размещение символов заставляет код выглядеть полностью отличающимся.
Если Вы работаете в команде тогда, моноширинные шрифты гарантируют, что код ясен и правильно размеченный для всех, безотносительно моноширинного шрифта, который они предпочитают использовать.
Ваш код может выглядеть ясным Вам при использовании шрифта переменной ширины, но он вряд ли будет выглядеть одинаково, если пользователь моноширинного шрифта откроет его.
Я использую Comic Sans MS, который выглядит довольно разумным как небольшие размеры точки (он только начинает выглядеть "забавным" на размеры заголовка). Это снисходительно относится к глазам, и все же сохраните текст достаточно маленьким для имения разумного объема кода, видимого в текстовом окне с несколькими из прикрепленных открытых панелей VS.
Вы можете иметь панель Solution Explorer, и все еще иметь 100 столбцов текста, читаемого без горизонтальной прокрутки. Moveover, у меня может быть панель DXCore Documentor (отображающийся, отформатировал XMLDOCs), широко открывают достаточно для чтения в то время как все еще способность видеть достаточно текста к документу XMLdocs.
Мне нравится выстраивать в линию связанные условные выражения, пытаться сделать его более очевидным, что они сгруппированы. Например:
if ((var1 == FOO) && ((var2 == BAR) ||
(var2 == FOOBAR)))
шрифты Переменной ширины делают это более трудным.
В моноширинном шрифте:
Il 0O
Все он, который взятия являются несколькими часами попытки выяснить, почему поиск не находит что-то, потому что у Вас есть 2 пробелов вместо 1 в Вашем литерале, для понимания Вас, должен использовать Моноширинные шрифты. Я имел, это происходит со мной однажды при попытке зафиксировать агент Lotus Notes, когда разработчик не использовал моноширинный шрифт. Только когда я вставил код в CodeWright для печати его, что было очевидно, какова проблема была.
Я стал любопытным этим потоком, потому что много аргументов в пользу моноширинных шрифтов могут действительно быть опровергнуты легко с некоторой тонкой настройкой. Таким образом, я переключил свой IDE на Calibri (потому что это имеет хорошую, круглую поверхность и оптимизировано для удобочитаемости на экранах для UI †“прекрасный). Теперь я, очевидно, должен использовать вкладки, вместо этого располагает с интервалами для добавления отступа (игнорирующий все проблемы), и 4 ширины пробелов состоят достаточно ясно в том, таким образом, я переключился на 10.
Взгляды, довольно хорошие теперь. Однако существует несколько очевидных проблем, которые я мог определить. Больше могло бы появиться позже, после того, как я протестировал это настройки некоторое время.
Символы не выравниваются хорошо. Как пример, рассмотрите следующий код C#:
var expr = x => x + 1;
стрелка (=>
) похожа на единицу приблизительно в любом моноширинном шрифте. Это похоже на два смежных символа в других шрифтах. То же верно для операторов как >>
и т.д.
Контекстно-зависимое добавление отступа полностью повреждается: в некоторых контекстах это - недостаточно к indentate постоянное число вкладок. Возьмите выражения LINQ, которые могли бы быть расположены с отступом следующим образом:
var r = from c in "This, apparently, is a test!"
where !char.IsPunctuation(c)
select char.ToUpper(c);
Вы просто не можете сделать этого с пропорциональным шрифтом.
, В целом, символы являются слишком узкими. Снова, дополнительный межсимвольный интервал мог бы помочь, и это определенно необходимо в случае punctiuation. Однако у меня есть чувство, что вся эта тонкая настройка для создания пропорциональных шрифтов более читаемыми просто эмулировала бы что моноширинные шрифты к естественно. Это, конечно, верно для всех моментов, упомянутых до сих пор.
Моноширинные шрифты значительно упрощают выстраивание кода.
Это особенно актуально при работе в команде; каждый в команде может использовать разные шрифты, и пока все они моноширинные, все будет выровнено. Точно так же, если один человек использует много разных инструментов разработки, все выровняется, если все они моноширинные. Если бы не все они были моноширинными, вам нужно было бы убедиться, что все они используют один и тот же шрифт, а если вы разрабатываете на двух платформах, это может быть сложно.
Фактически, некоторые инструменты разработки поддерживают только моноширинные шрифты.
Другая причина заключается в том, что в моноширинных шрифтах характерны более отчетливые символы. Сравните lIiO0 с lIiO0
, и вы поймете, что я имею в виду. Они также значительно упрощают подсчет пробелов.
Я все время вижу здесь обсуждение «выравнивания кода» и отступов. Я хотел бы отметить следующее:
Итак, собираем все это вместе, если вы начинаете каждую строку в одном и том же месте, и одинаковый интервал имеет одинаковую ширину, а идентификаторы не меняйте ширину в каждой строке спонтанно, тогда ваш код действительно БУДЕТ выстроен в линию! ... пока что-то не изменится.
например:
identifier.Method().Property.ToString();
identifier.Method().OtherGuy.ToString(); //how lined up and pretty!
identifier.Method().Sumthing.YouGetThePoint;
Единственное, что я признаю, это то, что не буквенно-цифровые символы обычно не очень широкие; к ним относятся) (] [} {,: | "; ',`! и. Это, однако, можно исправить в редакторе шрифтов ... просто сделав их шире. Это не проблема, присущая немоноширинным шрифтам; там просто есть На него не было большого спроса, и поэтому это еще не было сделано.
В общем, личные предпочтения - это хорошо, но я думаю, что нет особых практических причин отдавать предпочтение моноширинному формату немоноширинному. Вам нравится внешний вид Конечно, сделайте моноширинный формат. Хотите, чтобы на экране поместилось больше материалов? Выбирайте немоно. Но то, как люди относятся к немоноширинному пространству как к ереси, немного преувеличено.