Почему Visual Studio использует разные настройки отступов для С# и для С++?

Для С# Visual Studio по умолчанию использует 4 пробела, тогда как для С++ это жесткие вкладки. Почему это так? Почему это другое?

Мой проект состоит из кода С# и С++, и разница действительно меня раздражает. Я хочу установить общий стандарт для всех источников, но мне интересно, есть ли у него какие-то недостатки.

Ответ 1

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

Способ обойти это через файл .vssettings. Когда я впервые начал работать с VS 2005, я устанавливал значения tabs/spaces по умолчанию на каждом языке. Вы можете сделать это с помощью Tools → Options → Text Editor → (С#/С++). Затем я экспортирую настройки вкладки в файл .vsssettings. Всякий раз, когда я устанавливаю VS на новую машину, я просто импортирую этот файл, и у меня есть мои счастливые настройки пространства/вкладки.

PS: правило пробелов:)

Ответ 2

Конечно, вкладки - единственный правильный путь. Tab может делать все, что может сделать пространство. Пробелы не могут делать многое из того, что может делать вкладка.

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

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

Проблема в С# 2010 заключается в том, что я не могу найти какой-либо вариант, чтобы изменить ее на вкладки.

Ответ 3

Я сомневаюсь, что есть недостатки, поскольку грамматика С++ не различает закладки и пробелы. Кстати, я считаю, что лучший способ установить стандарты стиля кода - это экспортировать настройки VS и поделиться им с командой.

Ответ 4

Причина, стоящая за четырьмя пробелами С# по умолчанию, заключается в том, что кто бы ни открывал файл, то отступ будет таким же.

Вы можете изменить его, как хотите, в настройках.

Ответ 5

Просто пойдите с тем, что вы предпочитаете, я обычно использую вкладки на С++. Тем, кто просматривает мой код, все равно используют вкладки RE-настроек по умолчанию VS, так что нет реального натяжения, чтобы заменить это пробелами. Я не уверен, что это было сейчас, но когда F # находилась в зачаточном состоянии (то есть, довольно рано вышла из MSR), вам нужно было использовать пробелы в #light-коде, иначе компилятор будет жаловаться на то, что значение witespace важно.

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

Ответ 6

Для С# Visual Studio по умолчанию использует 4 пробела, тогда как для С++ это жесткие вкладки. Почему это так?

Почему бы и нет?

Просто измените его, если вы не счастливы.

Ответ 7

Пространства затрудняют перемещение по коду с помощью клавиатуры.

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

Если вы используете пробелы для вкладок в любом HTML, CSS или JavaScript, вы делаете это неправильно. Там нет обсуждений tabs-vs-spaces для html/css/js - это либо вкладки, либо незнание. Клиентский код не скомпилирован, а IIS не включил сжатие по умолчанию - избыточное пустое пространство = лишний жир.

Вернемся назад, когда VB6 не дал нам выбор использовать вкладки, но теперь мы можем и должны - если вы этого не сделаете, ваш код заставит его выглядеть так, как будто вы все еще цепляетесь за пути старой школы.

Так прекратите кодирование, как в 1999 году. Используйте вкладки. Сделайте это для детей.

Ответ 8

В аргументе tabs vs spaces есть простой ответ: вкладки. Вкладки позволяют указать ваш отступ, не заставляя других жить с ним. Учитывая, что размеры вкладок являются лишь личными предпочтениями, один пользователь не должен заставлять других следовать его/ее параметрам отображения.

Почему разница между С++ и С#: нет подсказки. Однако, зная, что вкладки логически являются лучшим вариантом, просто измените С# (и на самом деле все языки) на вкладки и вуаля.