Przeciwny termin tiret [zamknięty]

11

Mówimy, że wcinamy kod. Piszę narzędzie do tworzenia ciągów, które mogą dodawać / usuwać tabulatory do kodu wcięcia.

Próba:

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

Jak mam nazwać metodę?

jgauffin
źródło
3
Jest to nieco nie na temat, ale: być może mógłbyś uniknąć jawnego wywoływania wcięć / wcięć, jeśli zastąpisz wywołania Add („<ul>”) i Ident () przez BeginElement („ul”), który zawiera logikę wcięcia. (a także oczywiście metoda EndElement)
David
@David: +1, ale oczywiście chcesz wziąć pod uwagę zagnieżdżone elementy wbudowane :)
Demian Brecht
11
Co outdent?
Kevin,
@Kevin: Świetna alternatywa, ale dlaczego nie dodasz jej jako odpowiedzi?
jgauffin
@David: Jest używany wewnątrz frameworka i nie jest narażony na działanie użytkownika (klasa jest publiczna, więc użytkownik może używać go do własnych celów). Można go również wykorzystać do czegoś więcej niż tylko znaczników, więc BeginElementetc nie jest odpowiednie.
jgauffin

Odpowiedzi:

24

Out jest przeciwieństwem wejścia, wszyscy to wiedzą. Dlaczego nie użyć Indent()i Outdent()?

Kevin
źródło
Tak przynajmniej zawsze to nazywałem.
Callum Rogers,
To samo tutaj, zawsze słyszałem, że nazywa się to outdent.
Brian Knoblauch,
17

Przeciwnie indent, użyłbym unindent. Z Wikisłownika:

nieugięty

Etymologia
un- + tiret; Powstał w latach 80. XX wieku, kiedy komputery sprawiły, że przenoszenie tekstu na stronie stało się banalne.
Czasownik
unindent ( pojedyncza trzecia osoba, zwykłe obecne insindents , obecne imiesłowy unindenting , prosta imiesłów przeszłość i przeszłość unindent )
1. Aby usunąć wcięcie; aby przesunąć blok tekstu bliżej lewego marginesu.
Musiałem cofnąć pierwszy wiersz każdego akapitu, aby mój esej zmieścił się na jednej stronie papieru.

Według Online Etymology Dictionary tiret pochodzi od:

wczesny 15c., indenten / endenten „do wykonywania wycięć; nadania (czegoś) wyglądu zębatego lub postrzępionego”, „także” do wykonania legalnego wcięcia „od O.Fr. endenternacinać lub wgniatać , nadawać ząbkowaną krawędź,” od ML indentare ”, aby wyposażyć zęby,„ od in ”do, w, na, na” (patrz in- (2)) + L. dens (gen , dentis ) „ząb” (patrz ząb). Powiązane: Wcięte; wcięcie . Sens drukowania jest po raz pierwszy potwierdzony w latach 70. Rzeczownik zapisano po raz pierwszy w latach 1590-tych, od czasownika. Wcześniejsze rzeczownikowe pojęcie „pisemnej umowy” (koniec 15c.) Jest opisane w słowniku Middle English Dictionary jako „scribal abbrev. Endenture ”.

Wcięcie jest więc jak wstawienie „wycięcia” w kodzie źródłowym. Aby usunąć to wycięcie, cofnij wcięcie: nieindent.

Hugo
źródło
16
Indent
Dedent

Aby to wesprzeć, szybkie google pomaga: unindent ma 290 000 trafień, a dedent ma 1 920 000 trafień, co daje z grubsza wskazówkę, że ten drugi jest szeroko stosowany. Chociaż należy tego używać jako argumentu bardzo ostrożnie.

Dedentjest także standardową terminologią używaną w dokumentach Pythona .

Dagnele
źródło
2
W rzeczywistości „dedent” ma tylko 321 000 trafień, gdy umieścisz go w cudzysłowie, a wiele z nich nie ma nic wspólnego z wcięciami, ale są raczej imionami lub innymi rzeczami (może terminy dentystyczne?). „unindent” ma 267 000 odsłon.
Falcon
2
Dedent nie jest prawdziwym angielskim słowem. Dobre API jest jasne i łatwe do zrozumienia dla każdego, kto czyta źródło (tak jak uwielbiam Pythona, wprowadziło mnie to w dziwactwo, którego wcale nie lubię). Ma to sens obok siebie, ale może nie być inaczej (lub dla kogoś, kto nie mówi płynnie po angielsku).
Demian Brecht
1
@Demian Oczywiście to angielskie słowo, używamy go. Jak moglibyśmy go użyć, gdyby nie istniał? Angielski nie jest ściśle regulowanym językiem preskryptywistycznym.
Konrad Rudolph,
6
„Outdent” ma prawie 14 milionów odsłon.
Mike Sherrill „Cat Recall”
2
@Demian Brecht: To tylko neologizm. Jako programista zanurzasz się w nich codziennie. Przyzwyczaić się do tego.
Jon Purdy,
12

Nie masz na myśli wcięcia ?

Cel oznacza coś zupełnie innego.

W przeciwnym razie może Unindent?

Na marginesie:

  • Używanie tabulatorów do wcięcia kodu jest złe (imho) - spacje są bardziej przenośne.
  • Nie udostępniłbym tego interfejsu API klientowi. builderPowinny być wystarczająco inteligentny, aby wiedzieć, co i czego nie tiret.
Demian Brecht
źródło
4
Post autorstwa Jeffa Atwooda nie mówi, dlaczego używanie kart jest złe. Na końcu rzuca zniewagę na użytkowników kart.
Peter Taylor,
16
„przestrzenie są bardziej przenośne”: co do cholery powinno to znaczyć?!?!? ... również nie zgadzam się, że karty są złe, w rzeczywistości osobiście uważam je za dobre . Jest bardziej przejrzysty, łatwiejszy do przeanalizowania i umożliwia użytkownikowi wybór, w jaki sposób powinny być reprezentowane w widoku. Nie widzę w nich żadnych negatywnych wad, w przeciwieństwie do przestrzeni, które nie mają wspomnianych wcześniej zalet.
Dagnelies
3
@arnaud: powinieneś przeczytać tabulatory vs. spacje. jest to w dużej mierze debata religijna, ale z moich doświadczeń wynika, że ​​zawsze dominowały miejsca ( szczególnie jeśli pracujesz nad projektem systemu operacyjnego lub masz wielu programistów, którzy używają różnych edytorów). tak naprawdę pod koniec dnia ważna jest konsekwencja.
Demian Brecht
2
Najlepiej jest mieć edytor, który automatycznie wstawia spacje X po naciśnięciu klawisza Tab.
Jose Faeti
2
@Konrad: Wymień jeden edytor, który nie obsługuje kart?
Callum Rogers,
5

Co SetIndentLevel(int level).

Usunięcie wcięcia oznacza wtedy ustawienie poziomu na 0. Afaik nie ma terminu na przeciwieństwo tej operacji.

Sokół
źródło
+1 - To lepsze podejście niż dwa wywołania funkcji w celu zwiększenia i zmniejszenia poziomu wcięcia.
mcottle,
6
Nie jestem pewien, czy to lepsze niż 2 metody. Korzystanie z metod setIndentLevel oznacza, że ​​Twoim obowiązkiem jest zapamiętanie głębokiego wcięcia w przypadku zagnieżdżonych elementów w dokumencie. Oznaczałoby to prowadzenie licznika. Nie, zdecydowanie powinna to być odpowiedzialność budowniczego, a nie twoja.
David,
1
@David: Możesz łatwo utworzyć dwie metody pakowania, aby to śledzić. W niektórych przypadkach może być lepszy lub łatwiejszy w użyciu, a w innych nie. W przypadku innego interfejsu należy wywoływać metodę zwiększania / zmniejszania wiele razy lub w pętli. Prawdopodobnie chciałbym mieć wszystkie trzy wersje: Ustaw / Zwiększ / Zmniejsz
Falcon
1
@David setIndentLevel(1 + getIndentLevel())- najlepszy z obu światów.
Izkata
5

Słowo „wcięcie” w rzeczywistości nie oznacza „wstawić białe znaki” - oznacza „dostosuj białe znaki, aby rzeczy się zgadzały”. W związku z tym wcięcie może oznaczać zarówno dodawanie, jak i usuwanie tabulatorów; tak jak nie ma przeciwieństwa do „chodzenia”, pod względem koncepcyjnym nie ma przeciwieństwa do „wcięcia”. Możesz usunąć wcięcie, cofnąć wcięcie lub zmienić poziom wcięcia, z których każda jest operacją, która w jakiś sposób odwraca lub zmienia efekty wcięcia na różne sposoby, ale żadna z nich nie jest „przeciwieństwem” wcięcia. Popularne „dedent” i „unindent” są w błędzie w ten sam sposób, co „unwalk” lub „defest”. (BTW, może to być dobre pytanie dla english.se)

W twoim przypadku wybrałbym IncreaseIndentationLeveli DecreaseIndentationLevel.

tdammers
źródło
1
polish.se nie lubi rozmawiać o warunkach programowania.
jgauffin
To bardziej składający się termin niż programujący, ale OK.
tdammers
„Wcięcie”, a nie „wcięcie”.
Mike Sherrill „Cat Recall”
1
Uzgodnione, „Zwiększ wcięcie” i „Zmniejsz wcięcie” są, ściśle mówiąc, poprawnymi warunkami. Spodziewałbym się, że będzie to język, którego programiści używają i rozumieją. Używasz „ujemnego przyspieszenia”, kiedy mówisz o zatrzymaniu samochodu, prawda?
StevenV,
4

Widziałem słowo „outdent”, na przykład na Wikipedii Template: Outdent page

Do umieszczania odpowiedzi na stronie dyskusji, gdy wcięcie staje się zbyt głębokie. Wcięcie na stronach dyskusji odbywa się za pomocą znaku dwukropka (:), aby utworzyć tabulatory; ten szablon generuje pasek łącznika i początkowy tekst wskazujący na odległość, na podstawie liczby dwukropków użytych w poprzednim tiret ...

Hans Keinging
źródło
2

Widziałem Dedentw książce Fowlera na temat DSL.

Andrey Agibalov
źródło
2

Dokumenty Google FWIW i MS Word używają „Zwiększ wcięcie” i „Zmniejsz wcięcie”. Zapominam, który redaktor (być może to TinyMCE, ostatnio z tym pracował), ale wiem, że kiedyś widziałem „Wcięcia” i „Outdent”

Wayne Molina
źródło
1

Definicja wcięcia:

Rozpocznij (wiersz tekstu) lub pozycję (blok tekstu, tabela itp.) Dalej od marginesu niż główna część tekstu

Tak naprawdę nie ma odwrotności, raczej wcinasz główny tekst dalej niż określony wiersz.

Myślę, że lepszym terminem byłoby RemoveIndent () lub ReduceIndent ()

Powiedziawszy to, wyszukiwanie w Google terminu „przeciwieństwo wcięcia” ujawnia następujący termin: Outdent . http://www.urbandictionary.com/define.php?term=indent Może to być również odpowiednie.

Gavin Coates
źródło
Outdent jest tak samo brzydki jak wydawca. „In” w „wcięciu” nie jest tak naprawdę przedrostkiem, zastępując go tak, jakby to było nadużycie angielskiej gramatyki.
tdammers
@tdammers - w pewnym sensie jest. Wcinasz akapit do wewnątrz, więc przeciwnie byłoby wgniecać go na zewnątrz - Outdent. Osobiście wolę Remove / ReduceIndent () dla nazwy funkcji ...
Gavin Coates
1
@tdammers: Widocznie „in-” w tiret jest przedrostek ( „w, w, na, na” - etymonline.com/index.php?term=indent ). Nie ma to znaczenia - nie widzę niczego „obraźliwego” w etymologii ludowej ( en.wikipedia.org/wiki/Folk_etymology ); to część ewolucji języka. I nie zgadzam się z tym, że postawa jest tak brzydka jak pochwała . Nie jestem nawet pewien, którą sylabę podkreślić w wydaniu ; tak czy inaczej jest bardzo brzydkie. Ale postawa jest miła i oczywista. Jest to idealne uzupełnienie wcięcia . Te dwa słowa tworzą przyjemną parę, która definiuje się nawzajem z bardzo wizualnym kontrastem. Lubię to.
Przepraszam, właśnie zdałem sobie sprawę, że nie przeczytałem poprawnie tego pytania lub jego odpowiedzi ... Zakładałem, że chodziło o automatyczne wyświetlanie zawijanych linii w edytorze tekstu. W takim przypadku, outdent (czyli opcja wyświetlania linii dalej w lewo niż linia powyżej) byłaby moim zdaniem idealna. Ale to pytanie dotyczy usunięcia wcięcia, które już istnieje - tak jak dzieje się po naciśnięciu Shift + Tab. W takim przypadku zgadzam się reduceIndent(), a nawet unindent().
callum
Czy moje własne badania; tak, „in” jest w rzeczywistości prefiksem, ale jak mówi callum, „outdent” oznaczałoby linię, która zaczyna się na lewo od lewej krawędzi. IIRC, coś takiego nazywa się negatywnym wcięciem w składzie, a nie postacią, a zresztą nie o tym tutaj mówimy.
tdammers
0

Wiem, że jestem trochę spóźniony na przyjęcie, ale miałem ten sam problem ze znalezieniem czegoś przeciwnego Indent. Ponieważ tutaj jest kilka różnych odpowiedzi na to pytanie, zapytałem kolegę z Anglii (UK), co by wybrał: jego pierwszą wskazówką było IncreaseIndenti DecreaseIndent. Ale Indenti Detentteż by działało.

Markus
źródło