Противоположный срок отступа [закрыто]

11

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

Образец:

builder.Add("<ul>");
builder.Indent();
builder.Add("<li></li>");
builder.Dedent(); // <-- what should this be named.
builder.Add("</ul>");   

Что я должен назвать метод?

jgauffin
источник
3
Это несколько не по теме, но: возможно, вы могли бы избежать явного вызова indent / dedent, если бы вы заменили вызовы Add ("<ul>") и Ident () на BeginElement ("ul"), который бы включал логику отступа. (а также, конечно, метод EndElement)
Дэвид
@David: +1, но, конечно, вы бы хотели учесть встроенные вложенные элементы :)
Демиан Брехт
11
Как насчет outdent?
Кевин
@Kevin: Отличная альтернатива, но почему бы вам не добавить ее в качестве ответа?
jgauffin
@David: он используется внутри фреймворка и не доступен пользователю (хотя класс общедоступен, так что пользователь может использовать его в своих целях). Также его можно использовать не только для разметки, поэтому BeginElementне подходит.
jgauffin

Ответы:

24

Выход противоположен, все это знают. Почему бы не использовать Indent()и Outdent()?

Kevin
источник
Это то, что я всегда называл по крайней мере.
Каллум Роджерс
То же самое здесь, я всегда слышал, что это называется outdent.
Брайан Кноблаух
17

Для противоположности indentя бы использовал unindent. Из Викисловаря:

Unindent

Этимология
un- + отступ; Возникла в 1980-х годах, когда компьютеры делали тривиальным перемещение текста на странице.
Глагол
неиндентифицированный ( единственное число от настоящего лица , простые настоящие, неиндентифицированные , присущие причастие, не имеющие отступов , простое прошлое и причастие прошедшего времени без отступов )
1. Удалить отступ; переместить блок текста ближе к левому полю.
Мне пришлось удалить первую строку каждого абзаца, чтобы мое сочинение поместилось на одной стороне листа .

Согласно Интернет-словарю по этимологии , отступ происходит от:

в начале 15 в., отступать / углублять «делать надрезы; придавать (что-то) зубчатый или зубчатый вид», а также «делать юридическое заключение» от О.Ф. «Отрезать » или « вдавить », дать зубчатый край, «от ML Indentare », чтобы снабдить зубами, «от - в, внутрь, на» (см. в - (2)) + L. dens (gen . dentis ) "зуб" (см. зуб). Связанный: с отступом; отступ . Чувство печати впервые засвидетельствовано в 1670-х годах. Существительное впервые записано в 1590-х годах от глагола. Ранее существительное значение «письменное соглашение» (конец 15 в.) Описывается в словаре среднего английского языка как «scribal abbrev. Of endenture ».

Таким образом, отступ - это как вставка метки в исходный код. Чтобы удалить эту метку, отмените отступ: unindent.

Хьюго
источник
16
Indent
Dedent

Чтобы подкрепить это, помогает быстрый Google: у undedent 290 000 обращений, а у dedent - 1 920 000, что дает грубое указание на то, что последний более широко используется. Хотя это следует использовать в качестве аргумента очень осторожно.

Dedentэто также стандартная терминология, используемая в документации по Python .

dagnelies
источник
2
На самом деле «dedent» имеет только 321 000 обращений, когда вы помещаете его в кавычки, и многие из этих обращений не имеют ничего общего с отступом, а скорее являются именами или другими вещами (возможно, термины дантиста?). У «unindent» 267.000 хитов.
Сокол
2
Dedent не является настоящим английским словом. Хороший API понятен и легко понятен любому, кто читает исходный код (насколько я люблю Python, это привело меня к причуде, которая мне совсем не нравится). Это имеет смысл рядом друг с другом, но может и не иначе (или для тех, кто не очень хорошо говорит по-английски).
Демиан Брехт
1
@Demian Конечно, это английское слово, мы его используем. Как мы могли бы использовать это, если это не существовало? Английский язык не является жестко регламентированным рецептурным языком.
Конрад Рудольф
6
Что ж, у «Аутдент» почти 14 миллионов просмотров.
Майк Шеррилл 'Cat Recall'
2
@Demian Brecht: это просто неологизм. Как программист, вы погружаетесь в них каждый день. Привыкай к этому.
Джон Перди
12

Вы не имеете в виду отступ ?

Намерение означает нечто совершенно другое.

В противном случае, может быть Unindent?

На примечании стороны:

  • Использование вкладок для отступа кода плохо (imho) - пробелы более переносимы.
  • Я бы не предоставил этот API клиенту. Он builderдолжен быть достаточно умен, чтобы знать, что делать, а что не отступать.
Демиан Брехт
источник
4
Сообщение Джеффа Этвуда не говорит, почему использование вкладок плохо. Это просто бросает оскорбление пользователям табуляции в конце.
Питер Тейлор
16
"пространства более переносимы": какого черта это должно означать?!?!? Кроме того, я не согласен, что вкладки плохие, на самом деле, я лично считаю их хорошими . Это чище, проще для анализа и позволяет пользователю выбирать, насколько пространственно они должны быть представлены в представлении. Я не вижу в них негативного недостатка, в отличие от пространств, которые не имеют ранее упомянутых преимуществ.
dagnelies
3
@arnaud: вы должны читать на вкладках против пробелов. это в основном религиозные дебаты, но, по моему опыту, пробелы всегда преобладали ( особенно, если вы работаете над проектом ОС или у вас есть несколько разработчиков, которые используют разные редакторы). действительно, в конце дня важна последовательность.
Демиан Брехт
2
Лучше всего иметь редактор, который автоматически ставит X пробелов при нажатии Tab.
Хосе Фаети
2
@Konrad: Назовите один редактор, который не поддерживает вкладки?
Каллум Роджерс
5

Что о SetIndentLevel(int level).

Удаление отступа - это просто установка уровня на 0. Афайк, здесь нет термина, противоположного этой операции.

сокол
источник
+1 - это лучший подход, чем два вызова функций для увеличения и уменьшения уровня отступа.
Маккотт
6
Не уверен, что это лучше, чем 2 метода. Использование методов setIndentLevel означает, что вы несете ответственность за то, чтобы помнить, как глубоко зашли отступы в случае вложенных элементов в документе. Это означало бы держать счетчик. Нет, определенно это должна быть ответственность строителя, а не ваша.
Дэвид
1
@ Дэвид: Вы можете легко создать два метода-обертки, чтобы отслеживать это. В некоторых случаях это может быть лучше или проще в использовании, а в других - нет. С другим интерфейсом вам придется вызывать метод увеличения / уменьшения несколько раз или в цикле. Так что я бы, вероятно, хотел бы иметь все три версии: Set / Increase / Decrease
Falcon
1
@ Давид setIndentLevel(1 + getIndentLevel())- лучшее из обоих миров.
Изката
5

Слово «отступ» на самом деле не означает «вставить пробел» - оно означает «настроить пробел так, чтобы все выровнялось». Таким образом, отступ может означать как добавление, так и удаление вкладок; так же, как нет противоположности «ходьбе», концептуально говоря, нет противоположности «отступу». Вы можете удалить отступы, отменить отступы или изменить уровень отступов, каждая из которых является операциями, которые каким-либо образом отменяют или изменяют эффекты отступа, но ни один из них не является "противоположностью" отступа. Популярные «dedent» и «unindent» ошибаются так же, как «unwalk» или «defest». (Кстати, это может быть хорошим вопросом для english.se)

В вашем случае я бы пошел с IncreaseIndentationLevelи DecreaseIndentationLevel.

tdammers
источник
1
english.se не очень любит обсуждать термины программирования.
jgauffin
Это скорее наборный термин, чем программный термин, но все в порядке.
tdammers
«Отступ», а не «отступ».
Майк Шеррилл 'Cat Recall'
1
Согласен, «Увеличить отступ» и «Уменьшить отступ» - это, строго говоря, правильные термины. Я ожидаю, что это будет язык, который программисты будут использовать и понимать. Вы используете «отрицательное ускорение», когда говорите о том, чтобы остановить свою машину, не так ли?
StevenV
4

Я видел слово "outdent", например, на странице Википедии .

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

Ханс Кеинг
источник
2

Я видел Dedentв книге Фаулера о DSL.

Андрей Агибалов
источник
2

FWIW Документы Google и MS Word используют «Увеличить отступ» и «Уменьшить отступ». Я забыл, какой редактор (возможно, это был TinyMCE, который работал с этим в последнее время), но я знаю, что однажды видел "Indent" и "Outdent"

Уэйн Молина
источник
1

Определение отступа:

Начало (строка текста) или позиция (блок текста, таблица и т. Д.) Дальше от поля, чем основная часть текста

На самом деле противоположности этому нет, скорее, вы делаете отступ для основного текста дальше указанной строки.

Я думаю, что лучшим термином будет RemoveIndent () или ReduceIndent ()

Сказав это, поиск в Google по слову "противоположность отступа" обнаруживает следующий термин: Outdent . http://www.urbandictionary.com/define.php?term=indent Это также может быть подходящим.

Гэвин Коутс
источник
Outdent так же безобразен, как и dedent. «In-» in «indent» на самом деле не является префиксом, заменяя его, как если бы это было злоупотреблением грамматикой английского языка.
tdammers
@tdammers - в некотором смысле это так. Вы удаляете абзац внутрь, так что наоборот будет вмятина наружу - Outdent. Лично я предпочитаю Remove / ReduceIndent (), хотя для имени функции ...
Гэвин Коутс
1
@tdammers: «in-» indent - это префикс («in, on, on» - etymonline.com/index.php?term=indent ). Не то, чтобы это имело значение - я не вижу ничего «оскорбительного» в народной этимологии ( en.wikipedia.org/wiki/Folk_etymology ); это часть эволюции языка. И я не согласен с тем, что отступник так же безобразен, как и отступник . Я даже не уверен, какой слог подчеркнуть в dedent ; в любом случае это очень уродливо. Но внешний вид приятен и очевиден. Это идеальное дополнение к отступу . Эти два слова создают прекрасную пару, которая определяет друг друга с очень визуальным контрастом. Мне это нравится.
Извините, я только что понял, что не смог прочитать этот вопрос или ответы на него должным образом ... Я предполагал, что речь шла об автоматическом отображении переносимых строк в текстовом редакторе. В этом случае, на мой взгляд, идеально подходит outdent (имеется в виду возможность отображения строки, расположенной дальше, чем линия над ней). Но этот вопрос на самом деле касается удаления уже существующего отступа - например, что происходит, когда вы нажимаете Shift + Tab. В этом случае я согласен reduceIndent()или даже unindent().
Каллум
Сделал мое собственное исследование; да, «in-» на самом деле является префиксом, но, как утверждает каллум, «outdent» будет означать линию, которая начинается слева от левого края. IIRC, такая вещь называется отрицательным отступом при наборе текста, а не выходным, и это не то, о чем мы здесь говорим в любом случае.
tdammers
0

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

Markus
источник