Форум программистов, компьютерный форум, киберфорум
Теория программирования
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 19.07.2015
Сообщений: 21

Зачем делают "Сдвиг скобок"?

20.12.2015, 15:15. Показов 808. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всегда хотел узнать зачем программисты, редакторы встроенные в среду разработки, форматируют текст таким образом?
Под сдвигом скобок я понимаю форматирование кода. Например:

C#
1
2
3
4
5
6
7
8
9
10
11
namespace TelerikWinFormsApp1
{
    public partial class RadForm1 : Telerik.WinControls.UI.RadForm
    {
        public RadForm1()
        {
            InitializeComponent();
        }
 
    }
}
Да, в редакторе можно всё настроить, отключить форматирование и т.д., но вопрос зачем?
Подобное форматирование встречаю почти везде, практически в каждом языке-коде-среде разработки.

Сначала я думал, что это сделано для удобства. Видно где начинается блок кода и где заканчивается. Визуально проводим вертикальную черту. Но в реальности, если процедура/блок кода больше одного экрана отследить начало блока уже сложно.
Намного удобнее когда при выделении одной скобки (пусть начало кода), редактор автоматически подсвечивает вторую скобку - конец кода. И не надо ничего искать и форматировать (пускай даже автоформатирование.)

Да, с большой вложенностью весь код начинает съезжать влево...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.12.2015, 15:15
Ответы с готовыми решениями:

Зачем делают каталоги?
Вопрос простой - для чего нужны каталоги, какую пользу они приносят своим владельцам?

Зачем иногда так делают?
Зачем иногда в классе реализуют возможность создать объект этого класса только через статический метод? Типа create или instanceOf.

Зачем люди делают каталоги?
Собственно, весь вопрос сформулирован. Ведь, во-первых, как я понял, Яндекс ведёт с ними борьбу. Во-вторых, в поддержку и модерацию...

11
529 / 432 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
20.12.2015, 15:19
Цитата Сообщение от cyberf Посмотреть сообщение
Но в реальности, если процедура/блок кода больше одного экрана
Бьем линейкой по пальцам тому, кот такой блок написал. И все. Продолжаем нормально форматировать код.
0
0 / 0 / 0
Регистрация: 19.07.2015
Сообщений: 21
20.12.2015, 16:09  [ТС]
Цитата Сообщение от Velesthau Посмотреть сообщение
Бьем линейкой по пальцам тому, кот такой блок написал. И все. Продолжаем нормально форматировать код.
Что плохого в том, что процедура "больше одного экрана"? Могу привести много процедур, функций, написанные профессионалами или включенные в стандартные библиотеки, на 100 строк кода и более.
А вот большая вложенность кода - это уже реже, но бывает.
Но это уже ОФФ...

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

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
namespace TelerikWinFormsApp1
{
public partial class RadForm1 : Telerik.WinControls.UI.RadForm
{
 
public RadForm1()
{
InitializeComponent();
}
 
}
//Конец класса
 
}
//Конец пространства имен
0
Модератор
Эксперт функциональных языков программирования
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
20.12.2015, 17:27
Со сдвигом код читать удобнее.

Все нормальные редакторы при выделении скобки подсвечивают парную.

Комментарии к закрывающим скобкам можно использовать, но очень выборочно. Иначе они захламляют код (если их использовать для каждого цикла).

Код проекта (который приходится постоянно править) должен быть оформлен максимально читабельно. Оформление кода библиотек (в которые не планируется вносить изменения) уже не критично.
0
0 / 0 / 0
Регистрация: 19.07.2015
Сообщений: 21
20.12.2015, 19:05  [ТС]
Цитата Сообщение от Shamil1 Посмотреть сообщение
Со сдвигом код читать удобнее.
Спорный вопрос. Кому удобнее, кому нет.
Я не спорю, что есть правила оформления кода и общепринятые стандарты, но лично мне не очень удобно.
Если кода мало - то зачем сдвиг? Я и так вижу, какая скобка/его часть к чему относится.
Если кода много - то зачем сдвиг? Прокрутив 500 строк кода вниз, я просто не найду по сдвигу, где какая часть кода заканчивается/начинается.
Вот подсвечивание скобок, скажем как в notepad++ это удобно.

Цитата Сообщение от Shamil1 Посмотреть сообщение
Комментарии к закрывающим скобкам можно использовать, но очень выборочно. Иначе они захламляют код (если их использовать для каждого цикла).
Согласен.

По моему сдвиг - это отсылка к прошлому. Когда редакторы были более простыми. И программисты были вынуждены использовать этот приём, для удобочитаемости кода. Сейчас эта необходимость отпала. Редакторы стали совершеннее.

Если я открою код без сдвига в блокноте, я действительно долго буду искать где начало-конец, циклы...вложенность и т.д. Код будет плохо читаем.
Но я не буду открывать его в блокноте. А открою в современном редакторе. И без сдвигов легко прочту код.

Поправьте, если не прав.
Просто я уже писал код длинной 2000 строк, в одном юните/модуле. И к сожалению, по условию задачи, мне пришлось сделать огромную вложенность.
Сдвиг нигде не использовал. Подсветка закрывающей скобки решает все проблемы.
0
Модератор
Эксперт функциональных языков программирования
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
20.12.2015, 20:35
Цитата Сообщение от cyberf Посмотреть сообщение
Подсветка закрывающей скобки решает все проблемы.
Чтобы увидеть подсветку закрывающей скобки, нужно навести курсор на открывающую скобку. И можно подсветить закрывающую только одну скобку. А со сдвигами я без лишних движений мышки вижу открывающие и закрывающие скобки для всех циклов.
Так что, если бы это зависило от меня, я бы скобки убрал, а сдвиги оставил.
0
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
20.12.2015, 21:20
Цитата Сообщение от cyberf Посмотреть сообщение
Просто я уже писал код длинной 2000 строк, в одном юните/модуле. И к сожалению, по условию задачи, мне пришлось сделать огромную вложенность.
Сдвиг нигде не использовал. Подсветка закрывающей скобки решает все проблемы.
На месте работодателя/заказчика/преподавателя я бы заставил переписать.
Цитата Сообщение от cyberf Посмотреть сообщение
По моему сдвиг - это отсылка к прошлому. Когда редакторы были более простыми.
Питон, например, не относится к старым или редко используемым языкам. Там сдвиг обязателен. Иначе код будет неверно интерпретирован (кстати, там нет скобок, обрамляющих блок кода)
Цитата Сообщение от cyberf Посмотреть сообщение
Но я не буду открывать его в блокноте.
А я, например, нередко печатаю код на терминале (cat). Зачем лишние телодвижения?
В общем, вы можете использовать свой метод при условии, что никто кроме вас читать код не будет.
Подавляющему большинству отступы удобнее скобок
0
529 / 432 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
20.12.2015, 21:53

Не по теме:

Цитата Сообщение от cyberf Посмотреть сообщение
Могу привести много процедур, функций, написанные профессионалами или включенные в стандартные библиотеки, на 100 строк кода и более.
Приведи. Будем знать непрофессионалов по имени.



Добавлено через 3 минуты
Цитата Сообщение от cyberf Посмотреть сообщение
Если кода мало - то зачем сдвиг?
Очень ясно видно, где начинается и кончается блок, не нужно двигать курсор, чтобы он подсветил начало и конец.
0
0 / 0 / 0
Регистрация: 19.07.2015
Сообщений: 21
20.12.2015, 22:09  [ТС]
Цитата Сообщение от Shamil1 Посмотреть сообщение
А со сдвигами я без лишних движений мышки вижу открывающие и закрывающие скобки для всех циклов.
Я вижу без сдвигов. Зачем сдвиги?
Более 4х вложенных циклов пока не встречал.

Как вариант кода.
PHP
1
2
3
4
5
6
for ($i = 1; $i <= 10; $i++) 
{
for ($j = 1; $j <= 10; $j++) 
{
echo'Текст';
}}
Или так. Сразу видно вложенный цикл.
PHP
1
2
3
4
5
6
7
8
for ($i = 1; $i <= 10; $i++) 
{
 
for ($j = 1; $j <= 10; $j++)
{echo'Текст'; echo"Ещё текст";}
 
 
}
А вот пример кода со сдвигом.

Вы можете сказать, к чему относятся последние скобки? Никто не сможет. Вы не видите всего кода.
Как помогает сдвиг? Никак. Вам придётся прокрутить код до начала, начала блока кода.
А скажем был бы комментарий - можно было не крутить. Вот о чём я говорю.


Цитата Сообщение от gng Посмотреть сообщение
В общем, вы можете использовать свой метод при условии, что никто кроме вас читать код не будет.
Я могу использовать любой метод. И я понимаю, что народ меня не поймет. Есть общепринятые стандарты, командная разработка и т.д.
Я не задаю вопрос как писать код, как использовать сдвиги. Я задаю вопрос зачем, для чего?

Вы не могли бы дать ссылку на стандарт, документацию где это разъясняется?
Просто делать так, как делают все не понимая зачем это, и не получаю никакой выгоды/прироста производительности и т.д. - это странно.
Миниатюры
Зачем делают "Сдвиг скобок"?  
0
Модератор
Эксперт функциональных языков программирования
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
20.12.2015, 22:20
Цитата Сообщение от cyberf Посмотреть сообщение
Вы можете сказать, к чему относятся последние скобки? Никто не сможет.
Я смогу: последняя - к неймспейсу, предпоследняя - к классу.
1
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
21.12.2015, 18:17
Цитата Сообщение от cyberf Посмотреть сообщение
Вы не могли бы дать ссылку на стандарт, документацию где это разъясняется?
В языке Python сдвиги стандартизированы. Найти текст стандарта в Гугле не составит труда.
Что касается большинства языков, то такого стандарта нет. Когда вы станете тимлидом, можете требовать писать на вашу манеру, не обращая внимания на то, что за глаза вас будут называть самодуром. :-)
0
 Аватар для артист
100 / 35 / 21
Регистрация: 17.09.2014
Сообщений: 1,609
24.12.2015, 14:42
Не удобно читать, когда делают так(открывающие скобки сразу после объявления):
C
1
2
3
4
5
6
7
namespace TelerikWinFormsApp1 {
    public partial class RadForm1 : Telerik.WinControls.UI.RadForm {
        public RadForm1() {
            InitializeComponent();
        }
    }
}
Или вообще вот так(вообще без скобок, стоит 1 строке съехать на 1 табуляцию, и весь смысл изменился):
C
1
2
3
4
namespace TelerikWinFormsApp1
    public partial class RadForm1 : Telerik.WinControls.UI.RadForm
        public RadForm1()
            InitializeComponent();
А сам люблю делать так(если в теле 1 строка, писать без скобок):
C
1
2
3
4
5
6
7
namespace TelerikWinFormsApp1
{
    public partial class RadForm1 : Telerik.WinControls.UI.RadForm
    {
        public RadForm1() InitializeComponent();
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.12.2015, 14:42
Помогаю со студенческими работами здесь

Зачем делают такое присваивание (классы)?
class A { public int X { get; set; } } class B : A { public int X { get; set; } ...

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

Зачем информацию whois делают публичной?
я зарегистрировал домен в зоне .COM у одного крупного и уважаемого провайдера, и моя паспортная информация (домашний адрес, телефон) ...

Зачем COB панели делают с тремя цветами
Купил фонарь на велосипед. На нем COB панель с тремя цветами: синий, белый, красный. Точно не знаю, возможно это маркетинговый ход. Однако,...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru