Почему среда IDE не поддерживает динамическое форматирование?

Учитывая все священные войны, окружающие различные стили форматирования кода, а также строгие требования к форматированию многих компаний, почему нет, IDE позволяют динамически переформатировать код?
Под этим я подразумеваю, что IDE-формат кодирует код так, как пользователь хочет его каждый раз, и сохраняет код без какого-либо форматирования. (Ну, может быть, разрывы строк, так что различия все еще легкие)
Пользователю не придется беспокоиться о соблюдении стандарта кодирования, люди не будут согнуты вне формы, работая в коде, который не отформатирован именно так, как им это нравится, а изменения форматирования не будут отображаться в разностях репозитория. < ш > Должен быть какой-то механизм для его отключения, чтобы он не испортил старый, предварительно отформатированный код, но в противном случае, что бы это не стало стандартной функцией?

Изменить: я знаю, что некоторые IDE имеют функцию переформатирования, но это вызывает почти столько же проблем, сколько и решает - различия в управлении версиями становятся почти бесполезными, поскольку фактические изменения теряются в море незначительных изменений форматирования и разные ширины символов табуляции все же выбивают вещи из выравнивания. Кроме того, это не позволяет программистам работать с кодом в их предпочтительном формате.

Ответ 1

Потому что большинству людей нравится видеть код, как он будет сделан. Если все инструменты, которые вы используете для просмотра вашего кода (программы diff, grep, веб-репозитории и т.д.), Понимают, как динамически форматировать код таким же образом, вас будут путать различные формы, это в вашей среде IDE и других инструментах.

Я согласен, что было бы неплохо, если бы у нас было больше инструментов структурного программирования, а не текстовых инструментов с фиксированной шириной, но это потребовало бы обновления всего в вашей цепочке инструментов, чтобы действительно сделать его работоспособным.

Ответ 2

Я думаю, что Eclipse позволяет вам форматировать код, как вам нравится.

EDIT: Да, форматы форматирования Java Code, основанные на правилах, установленных в проекте.

Ответ 3

Я думал, что это тоже будет хорошей идеей, но как функция программного обеспечения для управления версиями, а не для IDE.

Код может быть сохранен как список токенов, а затем реконструирован при копировании на машину разработки. Это ответит на точку aleemb, поскольку никакое свободное пространство никогда не хранится. Однако, возможно, потребуется более сложное форматирование, чтобы справляться со всеми случаями.

Он также отвечает на вопросы Мартина Харриса: код на вашем компьютере не будет содержать каких-либо специальных символов, просто пробелов между токенами.

Ответ 4

Я думаю, что файлы, которые живут на вашей реальной машине в большинстве случаев, должны быть в общем текстовом формате, нецелесообразно открывать любой файл исходного кода, над которым я работаю в блокноте или любом другом удобный текстовый редактор. Из-за этого я бы не хотел, чтобы мои локальные копии содержали специальные символы, которые IDE интерпретирует как "Это отступ, пожалуйста, используйте вкладку или пробел здесь, как вы считаете нужным". Мое мнение таково, что лучший способ сделать это форматирование - это система управления версиями, вы проверяете файл в формате, который вам нравится, я проверяю его форматирование, как мне нравится.

A назад я спросил этот вопрос об инструментах управления версиями, не понимая код и ответ ascalonx, указывающий мне на в базе данных. Жаль, что эта идея, похоже, не имеет большей тяги, поскольку она решит обе наши проблемы и гораздо больше. Я разработчик .NET, поэтому на данный момент я очень переживаю на холоде, но, по-видимому, Eclipse и IntelliJ в мире Java приближаются к этому идеалу (я не знаю, насколько близко, вы никогда не использовали)

Ответ 5

Я думаю, что самым большим препятствием будет восстановление комментариев исходного кода, поскольку у них нет формальной семантики - я не говорю о JavaDocs и т.п., а скорее о комментариях, которые встроены в исходные тексты. Без семантических правил для комментариев исходного кода вся концепция разваливается.

Конечно, вы можете управлять версиями AST, но как вы будете сопоставлять комментарии на узлах AST?

Наивный подход - связать комментарии с операторами на языке, но что, если у меня есть комментарий, который относится к "следующим 3 строкам", а затем кто-то перемещает одну из строк в другом месте. Куда идет комментарий?

Ответ 6

Я уверен, что есть программы и скрипты, которые форматируют код так, как вы указываете.

Хотя некоторые IDE поддерживают такую ​​переформатировку кода (Eclipse, Intellij для Java, Wing for Python, VS2007? для .net), даже если они не предназначены, нужно просто запустить эти сценарии в исходном коде.

Ответ 7

Если вы справитесь со следующим сценарием, я бы подумал, что это хорошая идея, но я подозреваю, что это не тривиально, а это означает, что это не интуитивно и предсказуемо, что плохо для пользователей.

Если код написан:

if(value!=null)

и динамический форматтер показывают:

if (value != null)

и я изменяю его:

if ((value != null) && (value.Length > 0))

а затем другой разработчик динамически форматирует его:

if ( (value != null) && (value.Length > 0) )

и изменяет другую строку в коде и сохраняет ее. Сохраняется ли это форматирование? Как вы согласовываете различные настройки форматирования двух разработчиков, потому что его новые дополнения будут в другом формате.

Вам нужно будет хранить в общем формате, но даже при этом длина строк будет отличаться, и разработчики будут разбивать линию на разных позициях для обертывания 80 или 100 char, и это становится довольно грязным.

Ответ 8

Плагиат будет трудно обнаружить:)

Ответ 9

Поскольку большинство людей не заботятся о том, как выглядит код, пока он согласован.

Ответ 10

Я думаю, что время, когда IDE начинают хранить свой код как XML, а затем используют пользовательскую таблицу стилей XSL для форматирования кода при представлении.