Nano Hash - криптовалюты, майнинг, программирование

Почему в Visual Studio 2015 неправильный отступ фигурных скобок?

Я использую Visual Studio 2015 Release Candidate.

В предыдущих версиях Visual Studio я всегда программировал с отключенными Automatic brace completion и Automatically format completed block on }.

В предыдущих версиях при создании блока фигурные скобки автоматически форматировались при вводе enter { enter }

Что приведет к:

class Foo
{
}

В VS 2015 это приводит к:

class Foo
{
    }

Есть ли какая-то новая настройка, которую я пропустил, или это ошибка в RC?

01.07.2015

  • Где-то был бы конфиг для этого. 01.07.2015
  • Возможно актуально: stackoverflow.com/questions/30520764/ 01.07.2015
  • @EvanCarslake Есть идеи, где? 01.07.2015
  • @Blorgbeard Я столкнулся с этим вопросом, прежде чем опубликовать свой собственный. Ответы там не решили мою проблему. 01.07.2015
  • это в опциях, редактор для соответствующего языка. но я думаю, что это плохая идея - отказываться от всех видов вещей, чтобы получить несколько полезных функций. скорее у меня был бы хороший список, например. форматирование, на которое я мог бы если бы захотел. как соглашаются все старожилы, студия разработчиков 6.0 была лучшей. с тех пор только вниз. 01.07.2015
  • @ Альф, в этом есть смысл. 01.07.2015
  • @Cheersandhth.-Alf Знаете ли вы конкретный вариант решения этой проблемы? Я уже просмотрел варианты дважды и возился со многими из них. 01.07.2015
  • не уверен, но я бы попробовал автоматическое форматирование фигурных скобок (i.imgur.com/8KpHsEa.png) 01.07.2015
  • @Cheersandhth.-Alf Ах, я должен был упомянуть, что это для C #. Раздел Formatting -> General для C# не имеет эквивалентной опции. :/ 01.07.2015
  • @Cheersandhth.-Alf: Я согласен, и почему я действительно презираю Eclipse. Я печатаю, не думай, что ты мне поможешь, черт возьми! Вы тратите мое время! 01.07.2015
  • Просто чтобы убедиться, что ваш код компилируется? Я видел, как средство форматирования делало странные вещи для определенных видов неполного / синтаксически нарушенного кода даже в старых VS. 01.07.2015
  • @Luaan: Я сначала подумал, что проблема в этом, но это не так. Код правильный и компилируемый (проверено в новом проекте). 01.07.2015

Ответы:


1

Хорошо, я проверил это. Результат кажется довольно очевидным — вы сказали Visual Studio не форматировать код на }, поэтому он этого не делает.

Другими словами, поведение в старых Visual Studio кажется нарушенным — даже если вы указали, что не хотите, чтобы VS выполнял форматирование за вас, он делает это. В конце концов, когда вы печатаете, ваш курсор оказывается на _ здесь:

class Test
{
    _

Затем вы просто добавляете }, так что

class Test
{
    }

Какая старая Visual Studio автоматически форматирует как

class Test
{
}

даже если вы сняли флажок Automatically format completed block on }. Это явно автоформатирование - если вы нажмете Ctrl+Z, он вернет форматирование, а не само }. Возможно, поведение в VS2015 является исправлением ошибки, присутствующей в старых версиях.

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

class Test
{
    public
        string
            Ana
    {
        get; set;
        }
    }

становится

class Test
{
    public
        string
            Ana
    {
        get; set;
        }
        }

на ВС2013! Это явно неправильно. С другой стороны, VS2015 корректно применяет без форматирования — он просто размещает курсор в том месте, которое, по его думанию, вам нужно, и никогда не применяет какое-либо форматирование автоматически.

Итак, есть ли способ вернуться к старому поведению? Ничего простого, я боюсь - я предполагаю, что MS просто считает правильным поведение, а старый глючит, и с этим трудно поспорить. Есть некоторые обходные пути, которые вы могли бы использовать, чтобы приблизиться к старому поведению, например, вручную отключить все автоматическое форматирование, кроме выравнивания фигурных скобок, но это все равно немного изменит поведение.

Тем не менее, я вижу, насколько поведение, которое вы ожидаете, было бы желательным. Если вы считаете, что это того стоит, вы можете попробовать зарегистрировать это как ошибку в Connect, хотя я бы не дал ей большого шанса быть «исправленной» — IMO, это исправление ошибки, а не ошибка.

01.07.2015
  • Хм, я понимаю, что вы говорите, но я не куплюсь на это. У меня возникли проблемы с пониманием того, как закрывающие фигурные скобки без отступа можно считать автоматическим форматированием, но все остальные базовые отступы, которые вы получаете при наборе текста, не считаются автоматическим форматированием. Я всегда понимал, что Automatically format completed block on } означает «Применить все фактические правила автоформатирования, установленные вами при завершении блока кода, который вы вводите». Кроме того, эта ошибка (если это является ошибкой) присутствует в Visual Studio как минимум с 2008 года. Зачем исправлять ее сейчас? 01.07.2015
  • @inlinevoid Что ж, различие, о котором я упоминал, сохраняется - автоматическое форматирование фактически меняет вывод. Другой отступ просто перемещает ваш курсор. И, конечно же, вы не исправляете ошибки, до которых никому нет дела, — это пустая трата ресурсов. Однако, когда вы все равно переписываете весь код (я полагаю, это связано с интеграцией Roslyn и тому подобным), вы, как правило, избегаете даже тех ошибок, которые никому не интересны. Я, конечно, понимаю, почему это раздражает, но в этом больше смысла (хотя я все равно считаю это глупым). Возможно, вы могли бы просто написать простую надстройку, чтобы справиться с этим? 01.07.2015
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..