Подтвердить что ты не робот

Оптимальный размер вкладки для чтения кода

В личных предпочтениях есть оптимальный размер вкладок (пробелы? 3 пробела? 8 пробелов?) для чтения кода? В разных проектах, над которыми я работал, люди, похоже, имеют совершенно разные стандарты. Я не могу читать 2 отступов пространства, но такие компании, как Google, используют его в качестве стандарта.

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

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

4b9b3361

Ответ 2

Мне нравится 8 пробелов (я знаю, правильно?). Это делает начало/конец блоков действительно очевидным.

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

0 пробелов

function test(){
var x = 1;
for (i=0; i<=5; i++){
doSomething();
}
}

Нет отступов, очевидно, плохо. Вы не можете сказать, где все начинается или заканчивается.

19 пробелов

function test(){
                   var x = 1;
                   for (i=0; i<=5; i++){
                                      doSomething();
                   }
}

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

8 пробелов

function test(){
        var x = 1;
        for (i=0; i<=5; i++){
                doSomething();
        }
}

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

Ответ 3

В этом обсуждении часто возникают недоразумения, потому что (как описывает jwz) обычно включает три отдельных вопроса:

  • Что происходит, когда я нажимаю клавишу Tab в текстовом редакторе?

  • Что происходит, когда я запрашиваю у моего редактора отступ одной или нескольких строк?

  • Что происходит, когда я просматриваю файл, содержащий символы U + 0009 HORIZONTAL TAB?

Мои ответы:

  • Нажатие клавиши Tab должно отстучить текущую строку (или выделенные строки) на один дополнительный уровень.

    В качестве вторичной альтернативы я могу также переносить редактор, который, подобно Emacs, использует этот ключ для контекстно-зависимой команды fix-my-indentation.

  • Отступы одной или нескольких строк должны следовать правилу правления, если консенсус достаточно прочен; в противном случае я предпочитаю 4-пространственный отступ на каждом уровне.

  • U + 0009 символов должны смещать последующие символы на следующую вкладку. Стоп-стопы начинаются в столбце 1 и разделяются на восемь столбцов, без исключений.

Ответ 4

2 space 4 busy coder
3 space for heavy if statement using script kiddies 
4 space for those who make real money pressing space 4 times
8 space for the man in ties and suit who doesn't need to code

Ответ 5

Я не знаю никаких исследований, которые отвечали бы на ваш вопрос. Я не думаю, что есть способ, чтобы это было не субъективно, но мое личное предпочтение - это 4 пробела.

Ответ 6

Я всегда использовал одну вкладку в виде двух пробелов.

Ответ 7

В прошлом я использовал 3 пробела. И это все еще мое предпочтение. Но 4 пространства, по-видимому, являются стандартом в мире VB. Поэтому я переключился на 4, чтобы соответствовать большинству примеров кода, которые я вижу, и остальной части моей команды.

Ответ 9

Поскольку вы используете Python, вы могли бы, как было сказано ранее, взять руководство по стилю python (PEP 8):

Отступ

Use 4 spaces per indentation level.

Но Ядро Linux CodingStyle говорит о различиях:

Вкладки - 8 символов, и, таким образом, отступы также имеют 8 символов. Есть еретические движения, которые пытаются сделать отступы 4 (или даже 2!) глубоко, и это сродни пытаясь определить значение PI 3. Обоснование: вся идея отступов состоит в том, чтобы четко определить, где начинается и заканчивается блок управления. Особенно, когда вы смотрите на ваш экран в течение 20 часов подряд, вам будет намного легче увидеть, как отступы работают, если у вас есть большие отступы.

В этом документе также есть некоторые примеры того, как должен выглядеть код и как изменяется идентификация (в C, хотя)

Ответ 10

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

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

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

4 пространства находятся где-то между этими двумя крайностями.

Но мое личное убеждение состоит в том, что не имеет значения, какой уровень отступов вы используете. Самое главное - выбрать какой-то стандарт и придерживаться его. Как говорили другие, следуйте PEP8, если вы пишите python, следуйте руководству по стилю Java, если вы пишете java, и если вы делаете хакерство linux, следуйте руководству по стилю. Даже если было небольшое преимущество в использовании одного над другим, это пустая трата энергии, которую нужно выбрать. Примите решение и перейдите к интересной части разработки программного обеспечения.

Ответ 11

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

Команда разработчиков должна в конце концов прийти к какому-то соглашению по длине линии. Я начал с 80 столбцов, и по сей день я все еще придерживаюсь 80 столбцов. AFAIK, stackoverflow также использует 80 столбцов в исходном коде.

Когда вы используете уровень отступа из 8, с типичной функцией, вложенной в 3 уровня, ваш код будет начинаться с столбца 24. Это оставило мне всего 56 символов, чтобы написать строку кода.

Вот какой код в VLC выглядит с помощью indent = 4:

            msg_Dbg( p_libvlc, "Adds %s to the running media player", mrl );
            free( mrl );

            /* send message and get a handle for a reply */
            DBusMessage *reply = dbus_connection_send_with_reply_and_block( conn, msg, -1,
                                                                            &err );
            dbus_message_unref( msg );

Вот как это выглядит с отступом = 8

                        msg_Dbg( p_libvlc, "Adds %s to the running media player", mrl );
                        free( mrl );


                        /* send message and get a handle for a reply */
                        DBusMessage *reply = dbus_connection_send_with_reply_and_block( conn, msg, -1,
                                                                                        &err );
                        dbus_message_unref( msg );

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

Очень важно сохранить размер вклада на вкладке 8. tab!= indent. В то время как temping делает жесткую вкладку как отступы, она также имеет очень плохие последствия. Многим людям также нравится выравнивать свой код. Таким образом, код, подобный приведенному выше, будет выглядеть так: tab = 4:

            msg_Dbg( p_libvlc, "Adds %s to the running media player", mrl );
            free( mrl );


            /* send message and get a handle for a reply */
            DBusMessage *reply = dbus_connection_send_with_reply_and_block( conn, msg, -1,
                                        &err );
            dbus_message_unref( msg );                                                  

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

Ответ 12

Я читал, что 2 пространства фактически оптимальны на основе исследования, в котором программистам было предложено оценить уровень гнездования на основе отступов, но при запросе программисты полагали, что 4 будет оптимальным. Нужна ссылка, но ее не найти.

Ответ 13

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

Ответ 14

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