Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
894
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4350
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Пропорциональный шрифт IDE
Я бы очень хотел видеть пропорциональный шрифт IDE, даже если мне придется построить его самостоятельно (возможно, как расширение для Visual Studio). То, что я в основном имею в виду, - это редактирование кода в стиле MS Word, которое похоже на типографский стиль в книге языка программирования C++.
Я хочу установить табуляторы для моих отступов и выстроить подписи функций и строки операторов присваивания, которые могут быть указаны в точках вместо фиксированных позиций символов. Я также хотел бы жирным шрифтом и курсивом. Различные размеры шрифтов и даже таблицы стилей было бы здорово.
Кто-нибудь видел что-нибудь подобное там или знает лучший способ начать строить его?
Мышление со стилем предполагает использование вашего любимого программного обеспечения для обработки текста, такого как Word или Writer. Создайте свой программный код в rich XML и извлеките соответствующие компилятору разделы с помощью XSLT. Программное обеспечение "Office" обеспечит все расширенные функции обработки текста и форматирования.
я ожидал, что ты опустишься и будешь придираться к этому предложению, но в этой идее есть какой-то реальный смысл.
Основное преимущество традиционного требования к шрифту 'non-proportional' в редакторах кода состоит в том, чтобы облегчить бремя выполнения форматирования кода.
Но со всем интерактивным автоматическим форматированием, которое происходит в современных IDE, вполне возможно, что пропорциональный шрифт может улучшить читаемость кода (а не затруднить его, как я уверен, ожидали бы многие пуристы).
Персонаж по имени Роуди Грин (известный своими статьями "Как написать недостижимый код") написал о теоретическом editor/language,, основанном на Java, и назвал его Бали . Он не включал в себя в точности непропорциональные шрифты, но он включал идею наличия неравномерных размеров шрифта.
Кроме того, этот короткий пост Джоэла Сполски постит к решению, эластичным табуляторам (как упоминалось другим комментатором), которые помогут с поддержкой непропорциональных (и переменных размеров) шрифтов.
@Thomas Оуэнс
Я не считаю, что код, отформатированный таким образом, легче читать.
Это нормально, это просто личное предпочтение, и мы можем не согласиться. Форматируйте его так, как вы считаете нужным, и я буду уважать его. Я часто спрашиваю себя: "как я должен форматировать ту или иную вещь?- Мой ответ всегда заключается в том, чтобы отформатировать его для улучшения читаемости, что, я признаю, может быть субъективным.
Что касается вашего примера, мне просто нравится, что этот красиво выровненный столбец находится справа, это своего рода быстрый "index" в коде слева. Сказав это, я бы, вероятно, избегал комментировать каждую строку подобным образом, потому что сам код не должен нуждаться в таком большом объяснении. И если это так, я склонен писать абзац выше кода.
Но рассмотрим этот пример с оригинального плаката. Его легче обнаружить комментарии во втором, на мой взгляд.
for (size-type i = 0; i<v.size(); i++) { // rehash:
size-type ii = has(v[i].key)%b.size9); // hash
v[i].next = b[ii]; // link
b[ii] = &v[i];
}
for (size-type i = 0; i<v.size(); i++) { // rehash:
size-type ii = has(v[i].key)%b.size9); // hash
v[i].next = b[ii]; // link
b[ii] = &v[i];
}
@Thomas Оуэнс
Но действительно ли люди выстраивают комментарии вот так? ... Я никогда не пытаюсь это сделать выстраивать объявления или комментарии или все, что угодно, и единственное место, где я когда-либо был. видно, что есть в учебниках.
Да, люди действительно выстраивают комментарии, заявления и все такое. Последовательно хорошо отформатированный код легче читать, а код, который легче читать, легче поддерживать.
Я удивляюсь, почему никто на самом деле не отвечает на ваш вопрос, и почему принятый ответ на самом деле не имеет никакого отношения к вашему вопросу. Но все равно...
пропорциональный шрифт IDE
В Eclipse вы можете выбрать любой шрифт в вашей системе.
установите табуляторы для моих отступов
В Eclipse вы можете настроить автоматическое отступление, в том числе установить его на "tabs only".
выстраивание сигнатур функций и строк инструкций присваивания
В Eclipse это делает автоматический отступ.
которые могут быть указаны в точках вместо фиксированных позиций символов.
К сожалению, я не думаю, что Eclipse может помочь вам в этом. Но это открытый исходный код. ;-)
жирный шрифт и курсив
Eclipse имеет это.
Различные размеры шрифтов и даже таблицы стилей было бы здорово
Я думаю, что Eclipse использует только один шрифт и размер шрифта для каждого типа файлов (например, исходный файл Java), но вы можете иметь разные "style sheets" для разных типов файлов.
Соэрен: это довольно аккуратно, IMO. Но действительно ли люди выстраивают комментарии таким образом? Для моих комментариев в конце строки Я всегда использую один пробел, затем / / или / * или эквивалент, в зависимости от языка, который я использую. Я никогда не пытаюсь выстраивать декларации, комментарии или что-то еще, и единственное место, которое я когда-либо видел, - это учебники.
@Brian Энсинк: я не нахожу, что код, отформатированный таким образом, легче читать.
int var1 = 1 //Comment
int longerVar = 2 //Comment
int anotherVar = 4 //Command
против
int var2 = 1 //Comment
int longerVar = 2 //Comment
int anotherVar = 4 //Comment
Лично я считаю, что первые строки читать легче, чем вторые.
Отступная часть вашего вопроса выполняется сегодня в реальном продукте, хотя, возможно, даже на более высоком уровне автоматизации , чем вы предполагали, продукт, о котором я упоминаю, является XSLT IDE, но те же принципы форматирования будут работать с большинством (но не со всеми) обычных синтаксисов кода.
Это действительно должно быть видно в видео , чтобы понять смысл всего этого (извините за музыкальный бэк-трек). Существует также легкий спин-офф редактора XML, XMLQuire, который служит демонстратором технологий.
На скриншоте ниже показан XML форматированный с довольно сложными правилами форматирования в этом XSLT IDE, где все отступы выполняются в стиле текстового процессора, используя левое поле-не пробел или символы табуляции.
Чтобы подчеркнуть эту концепцию форматирования, все символы были выделены, чтобы показать, где левое поле расширяется, чтобы сохранить отступ. Я использую термин виртуальное форматирование для описания этого - это не похоже на эластичные табуляции, потому что там просто нет вкладок, а только информация о полях, которая является частью форматирования 'paragraph' (здесь используются коды RTF). Парсер переформатируется непрерывно, в том же проходе, что и синтаксическая раскраска.
Пропорциональный шрифт здесь не использовался, но это могло быть довольно легко - потому что отступ установлен в TWIPS. Опыт редактирования весьма убедителен, потому что при рефакторинге кода (в данном случае XML), возможно, путем перетаскивания или увеличения длины значения атрибута, отступ просто перетекает сам по себе, чтобы соответствовать-там нет клавиши tab или кнопки 'reformat' для нажатия.
Итак, отступ есть, но работа с шрифтом-более сложная проблема. Я экспериментировал с этим, но обнаружил, что если шрифты повторно выбираются при вводе, горизонтальное смещение кода слишком отвлекает-вероятно, потребуется инициированная пользователем команда 'format fonts'. В продукте также есть встроенная технология чернил/рукописного ввода для аннотирования кода, но я еще не использовал ее в живом выпуске.
Люди все жалуются на то, что комментарии не выстраиваются в очередь.
Мне кажется, что есть очень простое решение: определить единицу пространства как самый широкий символ в шрифте. Теперь пропорционально расставьте все символы, кроме пробела. пространство занимает столько места, чтобы выстроить следующий символ там, где он был бы, если бы все предшествующие символы в строке были самыми широкими в шрифте.
т.е.:
iiii_space_Foo
xxxx_space_Foo
будет выстраиваться в линию "Foo", причем пространство после "i" будет намного шире, чем после "x".
Так что назовем это упругими пространствами. а не табуляторы.
Если вы умный редактор, относитесь к комментариям особенно, но это всего лишь подливка
Позвольте мне вспомнить аргументы об использовании ключевого слова 'var' в C#. люди ненавидели его и думали, что это сделает код менее ясным. Например, вы не могли бы знать тип в чем-то вроде:
var x = GetResults("Main");
foreach(var y in x)
{
WriteResult(x);
}
Их аргумент состоял в том, что вы не могли видеть, был ли x массивом, списком или любым другим IEnumerable. Или что это был за тип Y. На мой взгляд, нечеткость возникла не из-за использования var, а из-за выбора неясных имен переменных. Почему бы просто не набрать:
var electionResults = GetRegionalElactionResults("Main");
foreach(var result in electionResults)
{
Write(result); // you can see what you're writing!!
}
"But you still cannot see the type of electionResults!"-это действительно имеет значение? Если вы хотите изменить тип возвращаемого значения GetRegionalElectionResults, вы можете это сделать. Подойдет любой IEnumerable.
Перенесемся в настоящее время. Люди хотят выровнять комментарии по аналогичному коду:
int var2 = 1; //The number of days since startup, including the first
int longerVar = 2; //The number of free days per week
int anotherVar = 38; //The number of working hours per week
Так что без комментария все непонятно. И если вы не выровняете значения, вы не можете отделить их от переменных. А ты знаешь? Как насчет этого (игнорируйте пули, пожалуйста)
- int daysSinceStartup = 1; / / включая первый
- инт freeDaysPerWeek = 2;
- инт workingHoursPerWeek = 38;
Если вам нужен комментарий к каждой строке, вы делаете что-то неправильно. "But you still need to align the VALUES"-а ты? какое отношение 38 имеет к 2?
В C# большинство блоков кода можно легко выровнять, используя только вкладки (или, как правило, кратные четырем пробелам):
- regionsWithIncrease ВАР =
- из результата в GetRegionalElectionResults()
- где result.TotalCount > результат > PreviousTotalCount &&
- result.PreviousTotalCount > 0 / / только новые регионы
- выберите result.Region;
- foreach (ВАР в regionsWithIncrease) {
- Написать(регион); }
Вы никогда не должны использовать комментарии line-to-line, и вам редко нужно выравнивать вещи по вертикали. Редко, но не всегда. Так что я понимаю, если некоторые из вас, ребята, предпочитают моноширинный шрифт. Я предпочитаю читаемость шрифта Noto Sans или Source Sans Pro. Эти шрифты доступны свободно от Google, и напоминают Calibri, но предназначены для программирования и, таким образом, имеют все необходимые характеристики:
- Большой : ; . , так что вы можете четко видеть разницу
- Ясно различимый 0Oo и отчетливый Il|
Основная проблема пропорциональных шрифтов заключается в том, что они разрушают вертикальное выравнивание кода, и это довольно серьезная потеря, когда речь заходит о написании кода.
Вертикальное выравнивание делает возможным манипулировать прямоугольными блоками кода, которые охватывают несколько строк, позволяя легко выполнять операции с блоками, такие как вырезание, копирование, вставка, удаление и отступ, неиндентирование и т. д.
В качестве примера рассмотрим этот фрагмент кода:
a1 = a111;
B2 = aaaa;
c3 = AAAA;
w4 = wwWW;
W4 = WWWW;
В mono-разнесенном шрифте = и ; все выстраиваются в линию.
Теперь если этот текст помещается в Word и отображается пропорциональным шрифтом текст эффективно превращается в это:
NOTE: добавлено дополнительное пустое пространство, чтобы показать, как = и ; больше не выстраиваются в линию:
a1 = a1 1 1;
B2 = aaaa;
c3 = A A A A;
w4 = w w W W;
W4 = W W W W;
С исчезновением вертикального выравнивания эти красивые блоки кода фактически исчезают.
Также потому, что курсор больше не гарантированно перемещается вертикально (т. е. номер столбца не всегда постоянен от одной строки к другой) это затрудняет написание макрос-скриптов, предназначенных для манипулирования похожими строками.