Thuật ngữ đối diện của thụt lề [đóng]


11

Chúng tôi nói rằng chúng tôi thụt mã. Tôi đang viết một trình xây dựng chuỗi có thể thêm / xóa các tab để mã thụt lề.

Mẫu vật:

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

Tôi nên đặt tên phương thức là gì?


3
Nó hơi lạc đề nhưng: có lẽ bạn có thể tránh gọi một cách rõ ràng thụt lề / suy ra nếu bạn thay thế các cuộc gọi Add ("<ul>") và Nhận dạng () bằng một BeginEuity ("ul") sẽ bao gồm logic thụt lề. (và cũng là một phương pháp EndEuity tất nhiên)
David

@David: +1, nhưng tất nhiên bạn muốn đưa các yếu tố lồng nhau nội tuyến vào tài khoản :)
Demian Brecht

11
Thế còn outdent?
Kevin

@Kevin: Thay thế tuyệt vời, nhưng tại sao bạn không thêm nó làm câu trả lời?
jgauffin

@David: Nó được sử dụng trong một khung và không được hiển thị cho người dùng (mặc dù lớp này là công khai để người dùng có thể sử dụng nó cho mục đích riêng của mình). Ngoài ra, nó có thể được sử dụng nhiều hơn là chỉ đánh dấu, vì vậy BeginElementvv không phù hợp.
jgauffin

Câu trả lời:


24

Ra là trái ngược với trong, mọi người đều biết điều này. Tại sao không sử dụng Indent()Outdent()?


Đây là những gì tôi luôn gọi nó ít nhất.
Callum Rogers

Tương tự ở đây, tôi luôn nghe thấy nó được gọi là lỗi thời.
Brian Knoblauch

17

Đối với ngược lại indent, tôi sẽ sử dụng unindent. Từ Wiktionary:

không kiên định

Từ nguyên
un- + thụt lề; Bắt nguồn từ những năm 1980 khi máy tính khiến mọi người phải di chuyển văn bản trên một trang.
Động từ
unindent ( người thứ ba số ít hiện tại đơn giản unindents , hiện participle unindenting , thì quá khứ đơn và quá khứ bỏ thụt lề )
1. Để tháo thụt đầu dòng; để di chuyển một khối văn bản đến gần lề trái.
Tôi đã phải unindent dòng đầu tiên của mỗi đoạn để bài tiểu luận của tôi sẽ phù hợp vào một mặt giấy.

Theo Từ điển Từ nguyên trực tuyến , thụt lề đến từ:

đầu 15c., thụt lề / kết thúc "để tạo ra các rãnh, để tạo cho (một cái gì đó) một vẻ ngoài có răng hoặc lởm chởm", cũng "để tạo ra một thụt pháp lý", từ O.Fr. endenter "để notch hoặc vết lõm, cung cấp một cạnh răng cưa," từ ML indentare "để cung cấp với răng," từ in- "vào, trong, trên, trên" (xem trong- (2)) + L. dens (gen . răng ) "răng" (xem răng). Liên quan: thụt lề; thụt lề . Ý nghĩa in ấn được chứng thực đầu tiên vào những năm 1670. Danh từ đầu tiên được ghi lại 1590s, từ động từ. Một ý nghĩa danh từ trước đó của "một thỏa thuận bằng văn bản" (cuối 15c.) Được mô tả trong Từ điển tiếng Anh là "viết tắt scribal . Của end gắn ."

Vì vậy, thụt lề giống như đặt một "notch" trong mã nguồn. Để loại bỏ notch đó, bạn hoàn tác thụt lề: unindent.


16
Indent
Dedent

Để sao lưu điều này, một google nhanh chóng giúp: unindent có 290.000 lượt truy cập trong khi người thừa kế có 1.920.000 lượt truy cập, đưa ra một dấu hiệu sơ bộ rằng cái sau được sử dụng rộng rãi hơn. Mặc dù điều này nên được sử dụng như là đối số rất thận trọng.

Dedentcũng là thuật ngữ độc lập được sử dụng trong các tài liệu python .


2
Trong thực tế, "cống hiến" chỉ có 321.000 lượt truy cập khi bạn đặt nó trong dấu ngoặc kép và nhiều trong số những lượt truy cập đó không liên quan gì đến thụt lề, nhưng có phải là tên hoặc những thứ khác (có thể là thuật ngữ nha sĩ?). "Unindent" có 267.000 lượt truy cập.
Falcon

2
Dedent không phải là một từ tiếng Anh thực tế. Một API tốt là rõ ràng và dễ hiểu bởi bất kỳ ai đọc nguồn này (nhiều như tôi yêu Python, điều này đã giới thiệu cho tôi một cách giải thích mà tôi không thích chút nào). Bên cạnh nhau, điều này có ý nghĩa, nhưng có thể không khác (hoặc với một người không rành tiếng Anh).
Demian Brecht

1
@ Tất nhiên đó là một từ tiếng Anh, chúng tôi đang sử dụng nó. Làm thế nào chúng ta có thể sử dụng nó nếu nó không tồn tại? Tiếng Anh không phải là ngôn ngữ theo quy định chặt chẽ.
Konrad Rudolph

6
Chà, "lỗi thời" có gần 14 triệu lượt truy cập.
Mike Sherrill 'Nhớ lại mèo'

2
@Dppy Brecht: Đó chỉ là một chủ nghĩa thần kinh. Là một lập trình viên, bạn đắm chìm trong chúng hàng ngày. Làm quen với nó.
Jon Purdy

12

Bạn không có ý thụt lề ?

Ý định có nghĩa là một cái gì đó hoàn toàn khác nhau.

Nếu không, có thể Unindent?

Còn một chú ý đáng nói:

  • Sử dụng các tab để mã thụt lề là xấu (imho) - không gian dễ di chuyển hơn.
  • Tôi sẽ không để API này tiếp xúc với khách hàng. Các buildercần phải đủ thông minh để biết những gì và những gì để không thụt lề.

4
Bài đăng của Jeff Atwood không nói lý do tại sao sử dụng các tab là xấu. Nó chỉ đưa ra một sự xúc phạm đến người dùng tab ở cuối.
Peter Taylor

16
"không gian dễ di chuyển hơn": điều đó có nghĩa là gì?!?!? ... Ngoài ra, tôi không đồng ý các tab là xấu, thực sự, cá nhân tôi thấy chúng tốt . Nó sạch hơn, dễ phân tích cú pháp hơn và cho phép người dùng chọn mức độ phù hợp mà họ nên được thể hiện trong chế độ xem. Tôi không thấy bất kỳ nhược điểm tiêu cực nào đối với chúng, ngược lại với những không gian không có những ưu điểm đã đề cập trước đó.
dagnelies

3
@arnaud: bạn nên đọc lên các tab so với dấu cách. đó phần lớn là một cuộc tranh luận tôn giáo, nhưng theo kinh nghiệm của tôi, không gian luôn chiếm ưu thế ( đặc biệt nếu bạn đang làm việc trong một dự án hệ điều hành hoặc có nhiều nhà phát triển sử dụng các trình soạn thảo khác nhau). thực sự, vào cuối ngày, điều quan trọng là tính nhất quán.
Demian Brecht

2
Tốt nhất là có một trình soạn thảo tự động đặt dấu cách X khi bạn nhấn Tab.
Jose Faeti

2
@Konrad: Đặt tên cho một trình soạn thảo không hỗ trợ các tab?
Callum Rogers

5

Những gì về SetIndentLevel(int level).

Xóa một thụt lề sau đó chỉ cần đặt mức thành 0. Afaik không có thuật ngữ nào ngược lại với thao tác này.


+1 - Đó là một cách tiếp cận tốt hơn so với hai lệnh gọi hàm tăng và giảm mức thụt lề.
hủy hoại

6
Không chắc chắn nó tốt hơn 2 phương pháp. Sử dụng một phương thức setententLevel có nghĩa là bạn có trách nhiệm ghi nhớ mức độ thụt sâu đã xảy ra trong trường hợp các phần tử lồng nhau trong tài liệu. Điều đó có nghĩa là giữ một quầy. Không, chắc chắn đó phải là trách nhiệm của người xây dựng, không phải của bạn.
David

1
@David: Bạn có thể dễ dàng tạo hai phương thức trình bao bọc để theo dõi nó. Trong một số trường hợp, nó có thể tốt hơn hoặc dễ sử dụng hơn trong khi trong các trường hợp khác thì không. Với một giao diện khác, bạn phải gọi một phương thức tăng / giảm nhiều lần hoặc trong một vòng lặp. Vì vậy, tôi có thể muốn cả ba phiên bản: Đặt / Tăng / Giảm
Falcon

1
@David setIndentLevel(1 + getIndentLevel())- tốt nhất của cả hai thế giới.
Izkata

5

Từ "thụt lề" không thực sự có nghĩa là "chèn khoảng trắng" - nó có nghĩa là "điều chỉnh khoảng trắng để mọi thứ thẳng hàng". Như vậy, thụt lề có thể có nghĩa là cả việc thêm hoặc xóa các tab; giống như không có đối diện với "đi bộ", về mặt khái niệm nói không có đối nghịch với "thụt lề". Bạn có thể loại bỏ vết lõm, hoàn tác thụt đầu dòng hoặc thay đổi mức độ thụt đầu dòng, mỗi trong số đó là các thao tác bằng cách nào đó hoàn nguyên hoặc thay đổi hiệu ứng của thụt lề, theo những cách khác nhau, nhưng không ai trong số chúng là "đối diện" thụt lề. "Người nổi tiếng" và "không cố chấp" phổ biến sai theo cách tương tự như "unalk" hoặc "defest". (BTW, điều này có thể tạo ra một câu hỏi hay cho tiếng Anh.se)

Trong trường hợp của bạn, tôi sẽ đi với IncreaseIndentationLevelDecreaseIndentationLevel.


1
english.se không thích thảo luận về các thuật ngữ lập trình.
jgauffin

Đó là một thuật ngữ sắp chữ hơn là một thuật ngữ lập trình, nhưng OK.
tdammers

"Chỉ định", không phải "thụt".
Mike Sherrill 'Nhớ lại mèo'

1
Đồng ý, "Tăng thụt lề" và "Giảm thụt lề" là các thuật ngữ chính xác, nói đúng ra. Tôi hy vọng đó sẽ là ngôn ngữ mà các lập trình viên sẽ sử dụng và hiểu. Bạn có sử dụng "tăng tốc âm" khi bạn nói về việc dừng xe của bạn lại không?
StevenV

4

Tôi đã thấy từ "lỗi thời", ví dụ như tại Mẫu Wikipedia : Trang hết hạn

Để trả lời một câu trả lời trên một trang thảo luận khi sự chú ý trở nên quá sâu sắc. Việc thụt lề trên các trang thảo luận được thực hiện bằng cách sử dụng ký tự dấu hai chấm (:) để tạo các tab; mẫu này tạo ra một thanh kết nối và văn bản ban đầu để chỉ ra một lỗi thời, dựa trên số lượng dấu hai chấm được sử dụng trong lần thụt lề trước đó ...


2

Tôi đã thấy Dedenttrong cuốn sách của Fowler về DSLs.


2

FWIW Google Docs và MS Word sử dụng "Tăng thụt lề" và "Giảm thụt lề". Tôi quên trình soạn thảo nào (có thể là TinyMCE, đã làm việc với nó gần đây) nhưng tôi biết tôi đã từng thấy "Indent" và "Outdent"


1

Định nghĩa thụt lề:

Bắt đầu (một dòng văn bản) hoặc vị trí (một khối văn bản, bảng, v.v.) xa lề hơn phần chính của văn bản

Không thực sự trái ngược với điều này, thay vào đó bạn đang thụt lề văn bản chính hơn dòng được chỉ định.

Tôi nghĩ rằng một thuật ngữ tốt hơn sẽ là RemoveInent () hoặc Giảm Entent ()

Phải nói rằng, một tìm kiếm google cho cụm từ "ngược lại với thụt lề" cho thấy thuật ngữ sau: Outdent . http://www.urbandipedia.com/define.php?term=indent Điều này cũng có thể phù hợp.


Outdent chỉ là xấu xí như cống hiến. "In-" trong "thụt lề" không phải là một tiền tố, thực sự, thay thế nó như thể đó là một sự lạm dụng ngữ pháp tiếng Anh.
tdammers

@tdammers - theo một nghĩa nào đó. Bạn đang làm xáo trộn đoạn văn bên trong, vì vậy điều ngược lại sẽ là làm cho nó đi ra ngoài - Outdent. Cá nhân tôi thích Loại bỏ / Giảm bớt () mặc dù đối với một tên hàm ...
Gavin Coates

1
@tdammers: Rõ ràng "in-" trong thụt lề tiền tố ("vào, trong, trên, trên" - etymonline.com/index.php?term=indent ). Không phải là vấn đề - Tôi không thấy bất cứ điều gì "lạm dụng" về từ nguyên dân gian ( en.wikipedia.org/wiki/Folk_etymology ); đó là một phần của sự phát triển ngôn ngữ. Và tôi không đồng ý rằng outdent là như xấu xí như dedent . Tôi thậm chí không chắc chắn mà âm tiết với stress trong dedent ; dù sao thì nó cũng rất xấu. Nhưng outdent là tốt đẹp và rõ ràng. Đó là một bổ sung hoàn hảo để thụt lề . Hai từ tạo ra một cặp đẹp xác định lẫn nhau với một sự tương phản rất trực quan. Tôi thích nó.
callum

Xin lỗi, tôi vừa nhận ra rằng tôi đã không đọc được câu hỏi này hoặc câu trả lời của nó một cách chính xác ... Tôi đã cho rằng đó là về việc hiển thị tự động các dòng được bọc trong trình soạn thảo văn bản. Trong trường hợp đó, outdent (có nghĩa là tùy chọn hiển thị một dòng xa hơn so với dòng trên nó) sẽ là hoàn hảo theo ý kiến ​​của tôi. Nhưng câu hỏi này thực sự là về việc loại bỏ một thụt lề đã tồn tại - giống như những gì xảy ra khi bạn nhấn Shift + Tab. Trong trường hợp đó, tôi đồng ý với reduceIndent(), hoặc thậm chí unindent().
callum

Đã nghiên cứu riêng của tôi; đúng, "in-" thực sự là một tiền tố, nhưng như các trạng thái callum, "outdent" có nghĩa là một dòng bắt đầu bên trái của cạnh trái. IIRC, một thứ như vậy được gọi là thụt lề tiêu cực trong việc sắp chữ, không phải là lỗi thời và đó không phải là những gì chúng ta đang nói ở đây.
tdammers

0

Tôi biết tôi đến bữa tiệc hơi muộn, nhưng cũng gặp vấn đề tương tự khi tìm kiếm điều ngược lại Indent. Vì đây là một số câu trả lời khác nhau cho câu hỏi đó, tôi đã hỏi một đồng nghiệp người Anh (Anh) anh ấy sẽ chọn gì: Mẹo đầu tiên của anh ấy là IncreaseIndentDecreaseIndent. Nhưng IndentDetentcũng sẽ làm việc.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.