Término opuesto de sangría [cerrado]

11

Decimos que sangramos el código. Estoy escribiendo un generador de cadenas que puede agregar / eliminar pestañas al código de sangría.

Muestra:

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

¿Cómo debo nombrar el método?

jgauffin
fuente
3
Está un poco fuera de tema, pero: tal vez podría evitar llamar explícitamente sangría / sangría si reemplaza las llamadas Agregar ("<ul>") e Ident () por un PrincipioElemento ("ul") que incluiría lógica de sangría. (y también un método EndElement, por supuesto)
David
@David: +1, pero por supuesto querrás tener en cuenta los elementos anidados en línea :)
Demian Brecht
11
¿Qué hay de outdent?
Kevin
@ Kevin: Gran alternativa, pero ¿por qué no la agregas como respuesta?
jgauffin
@David: se usa dentro de un marco y no está expuesto al usuario (aunque la clase es pública para que el usuario pueda usarla para sus propios fines). También se puede usar para más que solo marcado, por lo que BeginElementetc. no es apropiado.
jgauffin

Respuestas:

24

Fuera es lo contrario de adentro, todo el mundo lo sabe. ¿Por qué no usar Indent()y Outdent()?

Kevin
fuente
Esto es lo que siempre he llamado al menos.
Callum Rogers
Lo mismo aquí, siempre he escuchado que se llama outdent.
Brian Knoblauch
17

Por el contrario de indent, yo usaría unindent. De Wiktionary:

sin sangría

Etimología
un- + sangría; Se originó en la década de 1980 cuando las computadoras hacían que fuera trivial para cualquiera mover texto en una página.
Verbo sin
sangría ( tercera persona singular simple presente sin sangría , participio presente sin sangría , pasado simple y participio pasado sin sangría )
1. Para eliminar la sangría; para mover un bloque de texto más cerca del margen izquierdo.
Tuve que desangrar la primera línea de cada párrafo para que mi ensayo encajara en un lado del papel.

Según el Diccionario de Etimología en línea , la sangría proviene de:

principios de 15c., indenten / endenten "para hacer muescas; para dar (algo) una apariencia dentada o dentada," también "para hacer una escritura legal", de O.Fr. entrante "para hacer muescas o abolladuras, dar un borde aserrado a" desde ML indentare "para cubrir los dientes," desde dentro "hacia adentro, adentro, sobre" (ver in (2)) + L. dens (gen . dENTIS ) "diente" (véase el diente). Relacionado: Sangrado; sangría . El sentido de la impresión se certificó por primera vez en la década de 1670. El sustantivo se registró por primera vez en 1590, del verbo. Un sentido sustantivo anterior de "un acuerdo escrito" (finales de 15c.) Se describe en Middle English Dictionary como "abreviatura de escritura ".

Por lo tanto, la sangría es como poner una "muesca" en el código fuente. Para eliminar esa muesca, deshace la sangría: no sangría.

Hugo
fuente
16
Indent
Dedent

Para respaldar esto, un rápido google ayuda: unindent tiene 290,000 hits mientras que dedent tiene 1,920,000 hits, lo que da una indicación aproximada de que este último es más ampliamente utilizado. Aunque esto debería usarse como argumento con mucha cautela.

DedentTambién es la terminología estándar utilizada en los documentos de Python .

dagnelies
fuente
2
De hecho, "dedent" tiene solo 321,000 hits cuando lo pones entre comillas y muchos de esos hits no tienen nada que ver con la sangría, sino que son más bien nombres u otras cosas (¿tal vez los términos del dentista?). "unindent" tiene 267,000 visitas.
Falcon
2
Dedent no es una palabra real en inglés. Una buena API es clara y fácil de entender para cualquiera que lea la fuente (por mucho que ame Python, esto me presentó una peculiaridad que no me gusta en absoluto). Al lado del otro, esto tiene sentido, pero podría no ser de otra manera (o para alguien que no domina el inglés).
Demian Brecht
1
@Demian Por supuesto, es una palabra en inglés, la estamos usando. ¿Cómo podríamos usarlo si no existiera? El inglés no es un lenguaje prescriptivista estrictamente regulado.
Konrad Rudolph
66
Bueno, "outdent" tiene casi 14 millones de visitas.
Mike Sherrill 'Cat Recall'
2
@Demian Brecht: es solo un neologismo. Como programador, estás inmerso en ellos a diario. Acostumbrarse a él.
Jon Purdy
12

¿No quieres decir sangría ?

Intentar significa algo completamente diferente.

De lo contrario, tal vez Unindent?

En otros comentarios:

  • Usar pestañas para sangrar código es malo (en mi humilde opinión): los espacios son más portátiles.
  • No tendría esta API expuesta al cliente. El builderdebe ser lo suficientemente inteligente como para saber qué y qué no guión.
Demian Brecht
fuente
44
La publicación de Jeff Atwood no dice por qué usar pestañas es malo. Simplemente arroja un insulto a los usuarios de pestañas al final.
Peter Taylor
16
"los espacios son más portátiles": ¿qué diablos debería significar eso?!?!? ... también, no estoy de acuerdo con que las pestañas sean malas, de hecho, personalmente las encuentro buenas . Es más limpio, más fácil de analizar y permite al usuario elegir la amplitud de su representación en la vista. No veo ningún inconveniente negativo en ellos, en contraste con los espacios que no tienen las ventajas mencionadas anteriormente.
Dagnelies
3
@arnaud: deberías leer en pestañas vs. espacios. es en gran parte un debate religioso, pero en mi experiencia, los espacios siempre han prevalecido ( especialmente si está trabajando en un proyecto de sistema operativo o tiene múltiples desarrolladores que usan editores diferentes). Realmente, al final del día, lo importante es la consistencia.
Demian Brecht
2
Lo mejor es tener un editor que coloque automáticamente X espacios al presionar Tab.
Jose Faeti
2
@ Konrad: ¿Nombre un editor que no admite pestañas?
Callum Rogers
5

¿Qué pasa con SetIndentLevel(int level).

Eliminar una sangría es simplemente establecer el nivel en 0. Afaik no hay término para lo contrario de esta operación.

Halcón
fuente
+1: es un enfoque mejor que dos llamadas a funciones para aumentar y disminuir el nivel de sangría.
mcottle
66
No estoy seguro de que sea mejor que 2 métodos. El uso de un método setIndentLevel significa que es su responsabilidad recordar cuán profunda ha sido la sangría en el caso de elementos anidados en el documento. Eso significaría mantener un mostrador. No, definitivamente eso debería ser responsabilidad del constructor, no tuya.
David
1
@David: puede crear fácilmente dos métodos de envoltura para realizar un seguimiento. En algunos casos puede ser mejor o más fácil de usar, mientras que en otros casos no lo es. Con otra interfaz, debería llamar a un método de aumento / disminución varias veces o en un bucle. Probablemente quiera las tres versiones: Set / Increase / Decrease
Falcon el
1
@David setIndentLevel(1 + getIndentLevel()): lo mejor de ambos mundos.
Izkata
5

La palabra "sangría" en realidad no significa "insertar espacios en blanco", significa "ajustar espacios en blanco para que las cosas se alineen". Como tal, la sangría puede significar agregar o quitar pestañas; así como no hay opuesto a "caminar", conceptualmente hablando no hay opuesto a "sangrar". Puede eliminar la sangría, deshacer la sangría o cambiar el nivel de sangría, cada una de las cuales son operaciones que de alguna manera revierten o alteran los efectos de la sangría, de diferentes maneras, pero ninguna de ellas es "lo contrario" de la sangría. El popular "dedent" y "unindent" están equivocados de la misma manera que "unwalk" o "defest". (Por cierto, esto podría ser una buena pregunta para english.se)

En tu caso, iría con IncreaseIndentationLevely DecreaseIndentationLevel.

tdammers
fuente
1
english.se no es muy aficionado a discutir los términos de programación.
jgauffin
Es más un término tipográfico que un término de programación, pero está bien.
tdammers
"Sangría", no "sangría".
Mike Sherrill 'Cat Recall'
1
De acuerdo, "aumentar sangría" y "disminuir sangría" son los términos correctos, estrictamente hablando. Esperaría que fuera un lenguaje que los programadores usarían y entenderían. Usas "aceleración negativa" cuando hablas de detener tu auto, ¿no?
StevenV
4

He visto la palabra "outdent", por ejemplo en Wikipedia Plantilla: página Outdent

Para sangrar una respuesta en una página de discusión cuando la sangría es demasiado profunda. La sangría en las páginas de discusión se realiza utilizando un carácter de dos puntos (:) para producir pestañas; Esta plantilla produce una barra de conector y un texto inicial para indicar una sangría, en función del número de dos puntos utilizados en la sangría anterior ...

Hans Kein
fuente
2

Lo he visto Dedenten el libro de Fowler sobre DSL.

Andrey Agibalov
fuente
2

FWIW Google Docs y MS Word usan "Aumentar sangría" y "Reducir sangría". Olvidé qué editor (tal vez fue TinyMCE, he estado trabajando con eso últimamente) pero sé que una vez vi "Indent" y "Outdent"

Wayne Molina
fuente
1

Definición de sangría:

Inicio (una línea de texto) o posición (un bloque de texto, tabla, etc.) más alejado del margen que la parte principal del texto

En realidad, no hay un opuesto a esto, sino que está sangrando el texto principal más allá de la línea especificada.

Creo que un término mejor sería RemoveIndent () o ReduceIndent ()

Dicho esto, una búsqueda en Google del término "opuesto de sangría" revela el siguiente término: Outdent . http://www.urbandictionary.com/define.php?term=indent Esto también puede ser adecuado.

Gavin Coates
fuente
Outdent es tan feo como dedent. El "in" en "sangría" no es un prefijo, en realidad, reemplazarlo como si fuera un abuso de la gramática inglesa.
tdammers
@tdammers - en cierto sentido lo es. Está abollando el párrafo hacia adentro, por lo que lo contrario sería abollarlo hacia afuera: Outdent. Personalmente prefiero Remove / ReduceIndent () aunque para el nombre de una función ...
Gavin Coates
1
@tdammers: Aparentemente, la sangría "in" es un prefijo ("into, in, on, upon" - etymonline.com/index.php?term=indent ). No es que importe: no veo nada "abusivo" sobre la etimología popular ( en.wikipedia.org/wiki/Folk_etymology ); Es parte de la evolución del lenguaje. Y no estoy de acuerdo con que outdent sea ​​tan feo como dedent . Ni siquiera estoy seguro de qué sílaba enfatizar en dedent ; es muy feo de cualquier manera. Pero outdent es agradable y obvio. Es un complemento perfecto para la sangría . Las dos palabras crean un buen par que se definen entre sí con un contraste muy visual. Me gusta.
Lo siento, me acabo de dar cuenta de que no he leído esta pregunta o sus respuestas correctamente ... Supuse que se trataba de la visualización automática de líneas ajustadas en un editor de texto. En ese caso, outdent (es decir, la opción de mostrar una línea más a la izquierda que la línea por encima de ella) sería perfecto en mi opinión. Pero esta pregunta se trata realmente de eliminar una sangría que ya existe, como lo que sucede cuando presiona Shift + Tab. En cuyo caso, estoy de acuerdo reduceIndent()o incluso unindent().
callum
Hice mi propia investigación; Sí, la "entrada" es en realidad un prefijo, pero como dice callum, "saliente" significaría una línea que comienza a la izquierda del borde izquierdo. IIRC, tal cosa se llama una sangría negativa en la composición tipográfica, no una sangría, y no es de lo que estamos hablando aquí de todos modos.
tdammers
0

Sé que llego un poco tarde a la fiesta, pero tuve el mismo problema para encontrar lo contrario Indent. Como aquí hay varias respuestas diferentes a esa pregunta, le pregunté a un colega inglés (Reino Unido) qué elegiría: su primer consejo fue IncreaseIndenty DecreaseIndent. Pero Indenty Detenttambién funcionaría.

Markus
fuente