Các tab so với không gian, các ký tự thụt lề thích hợp cho mọi thứ, trong mọi tình huống, bao giờ? [đóng cửa]


84

Các tiêu chuẩn mã hóa cho mã được lưu trữ trong drupal.org đề nghị sử dụng hai khoảng trắng để thụt mã; các trang web khác đề nghị sử dụng các tab để thụt mã.

Các nhân vật thụt lề thích hợp cho tất cả mọi thứ, và trong mọi tình huống là gì? Hãy giải thích câu trả lời bạn đưa ra.



13
IDE mặc định FTW - chỉ cần nhấn phím tab và xem điều gì sẽ xảy ra
user281377

Dù bạn chọn gì, nó phải được sử dụng bởi cả nhóm chứ không phải khi người ta sử dụng các tab khác.
Đệ tử

1
Tôi đã cố gắng chỉnh sửa điều này để sửa hàm ý rằng các tab / dấu cách là cách duy nhất để thụt mã. Chỉnh sửa đã bị xóa, nhưng hy vọng bình luận này sẽ vẫn còn: Thay vì ký tự thụt lề, tại sao không sử dụng lề trái thay thế? - điều này có thể được tự động hoàn toàn bởi trình soạn thảo và trình xử lý văn bản đã thực hiện điều này trong nhiều thập kỷ.
pgfearo

4
Tôi thực sự không nghĩ rằng nên có một câu trả lời "được chấp nhận" ở đây. Thực tế câu trả lời có ít phiếu hơn thực sự là đầu tiên là minh chứng cho điều đó: tại sao người hỏi nên có một sức mạnh đặc biệt (nghĩa là có thể đặt câu trả lời yêu thích của họ trước) chỉ vì họ đặt câu hỏi?
Dean Harding

Câu trả lời:


129

Không gian

Một tab có thể là một số cột khác nhau tùy thuộc vào môi trường của bạn, nhưng một không gian luôn là một cột.

Về việc có bao nhiêu khoảng trắng (hoặc tab) tạo thành thụt đầu dòng, điều quan trọng là phải nhất quán trong toàn bộ mã của bạn hơn là sử dụng bất kỳ giá trị dừng tab cụ thể nào.


42
Đoạn thứ hai của bạn sai; Câu trả lời là 4!
Daenyth

5
@Daenyth - có lẽ nếu bạn đang sử dụng ngôn ngữ xoăn-brace. Hầu hết Pascal / Delphi sử dụng 2.
Gerry

72
Tại sao tôi phải được ủy quyền cho 2 hoặc 4 SPAC thụt đầu dòng của bạn khi TAB có thể được đặt tự động và chỉ ra một mức thụt đầu dòng duy nhất?
Jé Queue

3
@MGOwen Hiện tại, đối số thời gian tải xuống để mã hóa trang web được giải quyết dễ dàng bằng cách sử dụng nguồn rút gọn trên css / javascript và xóa khoảng trắng trên HTML. Xem mod_pagespeed để xem ý tôi là gì.
Evan Plaice

42
"Một tab có thể là một số cột khác nhau tùy thuộc vào môi trường của bạn" Có, đây chính xác là lợi thế. Mọi người có thể thiết lập nó theo sở thích của mình và được hạnh phúc.
Andrea

249

Tab

Bây giờ, tất nhiên, tính nhất quán quan trọng hơn một, và một IDE tốt làm cho sự khác biệt không đáng kể. Điều đó nói rằng, điểm của chủ đề này là một cuộc chiến thánh, vì vậy:

Tôi thích các tab:

  • Chúng là một nhân vật đặc biệt dành cho thụt lề
  • Chúng cho phép các nhà phát triển với các tùy chọn khác nhau về kích thước thụt lề thay đổi giao diện của mã mà không thay đổi mã (tách dữ liệu và trình bày để giành chiến thắng trong câu tục ngữ!)
  • Không thể thụt lề một cái gì đó bằng các tab. Vì vậy, khi bạn sao chép mã từ một số trang web đã sử dụng 3 khoảng trắng vào tệp thụt lề 4 không gian của bạn, bạn không phải xử lý sai.

12
Điều gì về việc sao chép mã thụt lề 3 không gian đó vào tệp được thụt vào tab mà bạn đã đặt các tab của mình thành 3 khoảng trắng? Khi bạn gửi mã của mình cho đồng bào, họ tự hỏi tại sao chức năng đó lại bị thụt vào tệ như vậy!
Wayne Werner

27
Các tab ban đầu không có nghĩa là thụt lề, chúng có nghĩa là để lập bảng và thực hiện một công việc khủng khiếp ở đó ...
Timwi

14
@Timwi: Wikipedia dường như nói rằng chúng có nghĩa là để di chuyển con trỏ đến tiếp theo của một tập hợp các cột cố định. Không có vẻ như lập bảng là chức năng chính. Ngoài ra, tôi đã đề cập đến thời kỳ hậu đánh máy.
Fishtoaster

40
Thêm vào đó, rất nhiều lập trình viên dành một lượng thời gian đáng kể để viết html, css, v.v., thực tế là một tệp có 4 khoảng trắng thay vì các tab lớn hơn 5-15% là thực sự đáng kể. Ví dụ: trang này bạn hiện đang tải chậm hơn ít nhất 10% so với trang SE vì nhóm SE đã sử dụng khoảng trắng . Kiểm tra cho chính mình.
MGOwen

23
Một lợi ích khác của phương pháp này - ít nhấn phím hơn khi sử dụng các phím mũi tên để điều hướng trái phải.
Nicole

117

Sử dụng các tab để thụt đầu dòng, một tab cho mỗi mức thụt lề và cho phép mọi người chọn mức độ rộng mà họ muốn.

Sử dụng khoảng trắng nếu bạn sắp xếp các ký tự trong một dòng, để chúng luôn xếp hàng bất kể kích thước tab.

Và tìm và đấm tất cả các tác giả phần mềm ban đầu đã để điều ngu ngốc này trở thành một vấn đề ngay từ đầu.
(Nghiêm túc, tại sao điều này thậm chí là một cái gì đó được thảo luận? Tiếp theo bạn sẽ nói với tôi rằng bạn cũng muốn sử dụng nhiều ký tự để ngắt dòng!)


33
Có có có có có có. Một trăm phần trăm có. Điều này cho phép mọi người đặt chiều rộng tab của riêng họ trong khi duy trì định dạng bảng. Nếu bạn lo lắng về việc giữ trong vòng 80 cột (như bạn có thể nên như vậy!) Thì chỉ cần chọn kích thước tab dự kiến ​​tối đa tùy ý (chẳng hạn như 4) và giữ trong lề cho các tab ở độ rộng đó. Thành thật mà nói, điều này là rất khó khăn?
Jon Purdy

Có, nhưng không sử dụng khoảng trắng để xếp hàng trong một dòng. Các đồng nghiệp của bạn có thể đang sử dụng một phông chữ tỷ lệ để nghệ thuật ASCII của bạn sẽ trông lạ trên màn hình của họ.
paperjam

3
Đây là câu trả lời đúng duy nhất ở đây
J.Ashworth

76

Tab

  • cho phép những sai lầm đáng chú ý hơn , thật khó chịu khi vi quản lý vào không gian.
  • là nhất quán , chúng chỉ được sử dụng để thụt lề, trừ khi bạn đang bình luận sai.
  • có thể tùy chỉnh , bạn có thể chỉ định trong các tùy chọn của trình chỉnh sửa độ rộng của chúng.
  • có năng suất cao hơn , tại sao gõ 4 khoảng trắng khi bạn có thể nhấn 1 tab.
  • có kích thước nhỏ hơn nhiều không gian.
  • chiếm nhiều không gian hơn một không gian
  • mất ít thời gian để đi qua .
  • có xu hướng hoạt động tốt hơn trong các IDE.

Không gian nên được sử dụng trong đó các tab hoàn toàn vô dụng.

Ngay cả để căn chỉnh các tham số và nhận xét, các tab vẫn hoạt động tốt hơn .


24
cá nhân "hiệu quả hơn", cá nhân tôi đã nhấn TAB và để IDE thực hiện chuyển đổi cho số lượng ký tự không gian thích hợp để giới thiệu. Có lẽ bạn cần nâng cấp: p?
Matthieu M.

3
-1: Những sai lầm đáng chú ý hơn: không đúng sự thật; nhất quán: hầu như không thể tùy chỉnh: có, nhưng nó cũng bất lợi cùng một lúc; hiệu quả hơn: không đúng, hầu như tất cả các id có thể chuyển đổi các tab thành không gian; kích thước nhỏ hơn: có, nhưng thực tế? Không; ít thời gian hơn: không có IDE hợp lý; có xu hướng hoạt động tốt hơn: hoàn toàn không nếu bạn sử dụng nhiều môi trường và công cụ
MaR

@MaR: Những lỗi đáng chú ý là đúng, chiều rộng của tab lớn hơn. Ngoài ra ... Python! Các tab là nhất quán vì một Tab duy nhất là một vết lõm, trong khi bạn phải xác định có bao nhiêu khoảng trống bạn sẽ sử dụng cho một vết lõm. Tùy biến là một lợi thế. Bạn đang sử dụng các tab ở nơi đầu tiên, vì vậy nó sẽ hiệu quả hơn. Có vẻ bạn thậm chí không thể đưa ra một lý do chính đáng tại sao nó không thực tế, những người ghét sẽ ghét ...;)
Tamara Wijsman

@TomWij: Làm thế nào là tab lớn hơn số lượng không gian tương đương? Python gần như là ngôn ngữ duy nhất có quyền sử dụng các khoảng trắng một cách an toàn (nhưng vẫn - nó chỉ cung cấp một chút lợi thế so với "khoảng trắng chèn"). Cũng thử các ngôn ngữ khác, môi trường cũ, khác biệt / hợp nhất, thiết bị đầu cuối, sccs để xem tại sao các tab vẫn là "lý tưởng" không tưởng.
MaR

@MaR: Tôi đã nêu 'số lượng không gian tương đương' ở đâu? Tôi đã thử tất cả, các tab hoạt động hoàn hảo trong đó!
Tamara Wijsman

41

Tất cả các đối số cho các tab là lý thuyết tuyệt vời. Nhưng...

Trong lý thuyết, thực hành và lý thuyết là như nhau. Trong thực tế, họ không.

Có, với các tab bạn có thể quyết định mức độ thụt đầu dòng của bạn. Và có, bạn có thể sử dụng kết hợp các tab và khoảng trắng để sắp xếp mọi thứ. Và trong một thế giới lý tưởng, nó sẽ

Trong thực tế, bạn không thể thấy sự khác biệt giữa các khoảng trắng và tab, chúng dường như luôn bị lẫn lộn khi di chuyển mã xung quanh và xem mã trong một chương trình khác có các tab được đặt thành 8 cột là một điều phiền toái.

Tôi đã từng sử dụng các tab. Sau đó, tôi bắt đầu làm việc như một phần của một nhóm và chia sẻ mã. Tôi nhanh chóng trở thành một người ủng hộ không gian. Vì vậy, trong khi tôi có thể đồng cảm với những điều không tưởng của các tab, tôi không thể tưởng tượng việc không sử dụng khoảng trắng.


6
bạn có thể có được một trình soạn thảo như Kate trình bày các tab có ký tự 'ma' - tôi có thể dễ dàng thấy các tab so với khoảng trắng khi mã hóa.
HorusKol

8
Bây giờ mọi biên tập viên đều có tùy chọn "hiển thị khoảng trắng" và Visual Studio có tùy chọn 'tabify'
Chris S

2
Lý lẽ tốt. Đó là lý do tôi từ bỏ việc cố gắng thuyết phục mọi người rằng các tab hợp lý hơn. Ngay cả các lập trình viên nên quen với suy nghĩ trừu tượng dường như nhầm lẫn giữa các tab và khoảng trắng ("nếu nó trông giống như bốn khoảng trắng, thì nó phải là bốn khoảng trắng!"). Cái đinh trong quan tài đối với tôi là dường như không thể cấu hình Emacs để thụt lề chỉ bằng các tab.
Martin Vilcans

3
+1 Không tưởng về tab là tuyệt vời, nhưng mỗi lần tôi di chuyển mã giữa các trình soạn thảo với độ rộng tab khác nhau, mã sẽ bị rối và bị điều chỉnh sai. Thật quá dễ dàng để âm thầm làm điều sai trái với các tab.
Mankude

Tôi cũng đã từng sử dụng các tab, nhưng tôi đã gặp rắc rối với một số IDE không thể chèn khoảng trắng cho các dòng tiếp tục và tôi ghét phải thay thế tất cả các tab được chèn tự động bằng dấu cách (Visual Studio là một trong số đó). Vì vậy, tôi chỉ gắn bó với không gian. Không gian cộng cho phép bạn sử dụng các thụt lề có kích thước bằng một nửa cho những thứ như public:trong khai báo lớp C ++ để chúng trông đẹp hơn (đặc biệt là với các lớp lồng nhau).
szx

31

Một số ý kiến ​​liên quan có thể được quan tâm:


105
Chỉ vì bạn nổi tiếng không làm cho bạn đúng.
Jé Queue

@Xepoch: bạn đã đọc lý do của họ chưa :)?
Matthieu M.

5
@Matthieu M., vâng tôi đã đọc từng, nhưng vẫn không đồng ý. Tôi cũng không thích ô liu nhưng không làm cho tôi sai vì những người khác làm. Tôi thấy thật
ngớ ngẩn

2
@Xepoch: vâng, tôi cho rằng mọi người đều có quyền đối với ý kiến ​​của một người :) Tôi nghĩ mặc dù Guido đã chỉ ra vấn đề chính: trộn các tab và khoảng trắng là xấu, bởi vì cả hai đều xuất hiện dưới dạng "khoảng trắng" cho người dùng.
Matthieu M.

3
@Fishtoaster: Khi bạn nói rằng Joel nói khoảng trắng, không nên liên kết đến một trích dẫn Joel thực tế? Liên kết chỉ đến diễn đàn JoelOnSoftware nơi một số ppl (rất có thể không nói cho Joel) thảo luận về các tab so với khoảng trắng.
Andreas Magnusson


20

Tôi chắc chắn. ghét. 4. không gian.

Tại sao? Chủ yếu là vì tôi mệt mỏi khi điều hướng mã của mình bằng bàn phím và phải liên tục nhấn left left left leftđể đi qua một vết lõm. Điều này được sinh ra từ các phiên bản đầu của Notepad ++ và thậm chí cả notepad Windows đơn giản, nơi không có nút định dạng. Tôi đã có rất nhiều vấn đề khi mọi người chỉ sử dụng 3 khi tôi đã sử dụng 4 ở mọi nơi khác trong số những thứ khác.

Lý do khác là ký tự tab tồn tại đặc biệt để thụt lề và chỉ sau đó được chấp nhận để điều hướng. Tại sao chúng ta làm space space space spacekhi một đơn giản tabsẽ làm việc? Tại sao IDE phải xử lý chính xác 2-5 mã và định dạng khi một tab đơn giản và tùy chọn tùy chọn sẽ hoạt động?

Thật không may, tôi là thiểu số.


31
Bạn không hiệu quả trong trình duyệt mã bàn phím. Bạn nên sử dụng CTRL + LEFT và CTRL + RIGHT để bỏ qua khoảng trắng và mã thông báo. Vì vậy, thụt lề sẽ không quan trọng.
Wizard79

7
Quan niệm sai lầm này xuất phát từ đâu mà các tab của Wikipedia tồn tại đặc biệt cho thụt lề? Các tab được gọi là các tab (tab Tab) vì chúng được phát minh để lập bảng, không phải thụt lề và chúng làm một công việc khủng khiếp ở cả hai.
Timwi

7
@Lorenzo: Bạn không hiệu quả khi duyệt mã bàn phím. Bạn nên sử dụng wb(hoặc ege) để bỏ qua khoảng trắng và mã thông báo: P
R. Martinho Fernandes

6
Vì lợi ích của việc vận động ma quỷ: đừng tạo ra mã được định dạng sai cho các biên tập viên mà bạn cho là thấp kém. Sử dụng các tab.
Jon Purdy

11
@Timwi: xin lỗi cho necro, nhưng phím tab máy tính KHÔNG được phát minh để lập bảng. Phiên bản TYPEWRITER của khóa đó là, nhưng theo thời gian bàn phím được phát triển để sử dụng với máy tính, phím tab được sử dụng để thụt nhiều hơn bảng, và thuật ngữ "tab" đã đồng nghĩa với thụt lề. Các tab cho MÁY TÍNH được thụt lề và chỉ theo quy ước là tên của khóa khớp với tên của máy đánh chữ. Đối số của bạn giống như tuyên bố rằng phím trả về của máy tính được dự định bắt đầu một dòng mới và di chuyển con trỏ sang bên trái, bởi vì đó là những gì nó được sử dụng trong một máy đánh chữ :)
Beofett

12

Cá nhân tôi thích sử dụng các tab trong mọi thứ, vì mỗi nhà phát triển có thể kiểm soát lượng thụt vào mỗi tab. Bằng cách đó bạn có được sự linh hoạt trong màn hình.

Điều đó đang được nói, tôi thường bắt chước bất kỳ phong cách mã hóa nào trong tệp để bắt đầu (vì tôi dành nhiều thời gian để thực hiện công việc bảo trì).


3
Điều đó phá vỡ ngay khi bạn bắt đầu thụt lề cho bất cứ điều gì khác ngoài câu lệnh lồng nhau. Ví dụ: nếu bạn muốn căn chỉnh các đối số hàm trên cùng một cột, một đối số trên mỗi dòng. Có thể bằng cách trộn các tab và không gian nhưng rất tẻ nhạt.
Finnw

2
Hoàn toàn không tẻ nhạt, vì điều đó có nghĩa là bạn có thể di chuyển gần hết quãng đường đó và sau đó chỉ cần sử dụng một vài khoảng trắng, thay vì phải nhập hàng tá khoảng trắng chỉ để đến đúng cột.
Jordan Reiter

1
@finnw bạn cho rằng tất cả mọi người đang sử dụng phông chữ đơn cách - vào năm 2012, số lượng đáng kể các nhà phát triển sử dụng tỷ lệ thuận. Nếu bạn có các ký tự không phải khoảng trắng ở bên trái của đối số đầu tiên của bạn, không có cách nào để đảm bảo các đối số trên các dòng tiếp theo sẽ phù hợp với tất cả mọi người.
paperjam

Bạn chưa bao giờ thử viết HAML, có bạn.
alt

2
Tôi ghét phải nói điều này, nhưng tôi không thể tưởng tượng việc lập trình theo phông chữ có chiều rộng thay đổi. Sự sai lầm tuyệt đối của nó lùn tiêu chuẩn giằng co, tab so với không gian, tất cả mọi thứ ... tôi chỉ đang già đi? (Điều gì xảy ra khi bạn nhận được thông báo lỗi với một dòng và số cột?)
lunchmeat317

10

Tôi không nghĩ rằng có những thứ như thụt lề thích hợp (ít nhất là không phải không có chiến tranh nhỏ).

Cá nhân tôi thích bốn không gian. Chúng cho phép tôi đọc mã nhanh hơn nhiều và chúng trông giống nhau trong mọi trình soạn thảo - ngay cả Vi.


9
vi (hay đúng hơn là vim) là một trong những trình soạn thảo tốt hơn để làm việc với các tab, Cũng như có thể đặt chiều rộng của tab và tự động mở rộng sang khoảng trắng (như hầu hết các trình soạn thảo có thể), bạn cũng có softtabstoptùy chọn retabretab!lệnh và .
Finnw

Em bé sẽ thực sự chết nếu chúng ta chỉ nói 4 không gian, ở mọi nơi, luôn luôn, không có lựa chọn - và tiếp tục?
MGOwen

2
Bốn không gian trông không giống nhau ở mọi nơi. Ngày càng có nhiều lập trình viên đang chọn phông chữ tỷ lệ trong IDE của họ để có trải nghiệm mã hóa dễ chịu và hiệu quả hơn. Bốn không gian có thể trông giống như một vết lõm khá nhỏ trong những tình huống này.
paperjam

8

Không gian, bởi vì khi bạn căn chỉnh các bình luận ở bên phải mã, hoặc danh sách tham số hàm hoặc các biểu thức đa dòng phức tạp hoặc những thứ thuộc về bản chất đó, bạn muốn tác phẩm đẹp của mình xuất hiện đúng với mọi người . Nếu bạn sử dụng các tab và cho phép mọi người đặt các tab của họ khác nhau, họ sẽ ngắt liên kết cho tất cả các trường hợp ngoại trừ mã đơn giản nhất.

Bên cạnh đó, rõ ràng là tất cả mọi người trên thế giới nên sử dụng vim, điều này khiến cho việc tầm thường trở nên thụt lề, không cố định và điều hướng qua "điểm dừng tab" ngay cả trong các tệp được thụt lề.


Đó là một tính năng thực sự tốt của nhiều biên tập viên - khả năng đi nhanh qua các gò đất và không gian.
Christian Mann

18
Âm thanh như bạn đang vẽ nghệ thuật ASCII chứ không phải mã hóa.
rmac

3
Tôi sẽ thêm: Tab không được sử dụng để căn chỉnh. Nếu bạn là người dùng tab và muốn căn chỉnh, trước tiên bạn phải nhập số lượng tab chính xác để thụt lề và THEN số lượng khoảng trống chính xác để căn chỉnh. Chỉ sau đó bạn mới thấy tab được định dạng mã ngay trên tất cả người dùng và người chỉnh sửa.
MaR

6

Tab là sự lựa chọn tự nhiên và chính thống, vì chúng theo định nghĩa được sử dụng để thụt lề.

Thật không may, các tab được thực hiện không đồng đều, vì vậy giải pháp thế giới thực duy nhất là 4 không gian.


8
Từ khi nào các tab (tab Tab) được sử dụng để thụt lề theo định nghĩa của Wap? Theo định nghĩa của họ, họ đã được phát minh để lập bảng (mặc dù họ cũng làm một công việc khủng khiếp).
Timwi

2
Về mặt kỹ thuật, phím quay lại được phát minh để di chuyển đầu máy chữ đến phía trước của dòng, trong khi việc di chuyển đến dòng tiếp theo được thực hiện bằng cách xoay con lăn. Sau đó, phím quay lại cũng sẽ tự động chuyển con lăn. Bạn không thấy mọi người bị treo lên trên phím return / enter. Phím tab rõ ràng đã được thêm vào máy tính để thực hiện thụt lề. Đó là một tương tự kỹ thuật số của điểm dừng tab, mà tôi đã có trên máy đánh chữ không dùng điện cũ. Dừng tab có thể được đặt để di chuyển con lăn đến bất kỳ vị trí nào bạn chọn, gần giống với vai trò hiện tại của phím tab khi thụt lề.
Jordan Reiter

@JordanReiter RE: "Mặc dù vậy, bạn không thấy mọi người bị treo lên trên phím return / enter.": Bạn chưa bao giờ phải đối mặt với CR (đại diện cho việc di chuyển đầu máy chữ đến trước dòng) / LF (đại diện cho việc xoay con lăn đến dòng tiếp theo) vấn đề?
Tối đa Nanasy

1
Vâng, nhưng đó thực sự là một vấn đề hệ điều hành, không phải là vấn đề bàn phím. Cho dù bạn đang sử dụng máy tính nào, bạn mong muốn nhấn phím enter hoặc phím return để đưa bạn đến liên kết tiếp theo. Bạn không sử dụng một phím để cấp nguồn cấp dữ liệu và một phím để trả lại tiền vận chuyển.
Jordan Reiter

4

Bạn rõ ràng cần một cách tiếp cận kết hợp.

Nếu bạn đang chia sẻ mã với các nhà phát triển khác, bạn cần phải chuẩn hóa và vì điều đó là không thể (koff koff), bạn cần làm cho mọi người thực hiện bốn khoảng trắng.

Sau đó, bạn cần một biên tập viên đủ thông minh để không ngu ngốc về điều đó, để biết rằng nó nên xử lý một dòng có bốn khoảng trống ở phía trước của nó giống như nó được thụt vào. Bất kỳ trình soạn thảo IDE hoặc lập trình viên hiện đại nào cũng có thể tự động chuyển mã bằng dấu cách thay vì các tab.


4

Tại sao ai đó không thể thực hiện điều này:

  • mã được lưu trữ trong một định dạng nhỏ gọn có lợi cho hệ thống được đề cập
  • khi mỗi nhà phát triển mở mã, nó được định dạng chính xác theo cách họ muốn
  • khi họ đã hoàn thành với nó, trở lại định dạng nhỏ gọn

Mọi người đều vui vì tất cả đều thấy định dạng 'của riêng mình'

Điều đó có khó không?


2
Bởi vì tôi không có đủ thời gian rảnh để sửa tất cả các trình soạn thảo và IDE hiện có mà mọi người sử dụng, và - ngay cả khi tôi đã làm - thuyết phục mọi người nâng cấp sẽ còn khó hơn.
Peter Boughton

Tôi chắc rằng họ có thể xây dựng nó vào SVN hoặc tìm một số cách khác để loại bỏ các công cụ cuối cùng ra khỏi nó.
tỏi adolf

13
Âm thanh giống như các tab. Mỗi nhà phát triển mở tệp và nhận chiều rộng thụt mà họ muốn.
rmac

1
Bạn đã có thể thiết lập RCS hoặc CVS ​​để sử dụng indentchương trình.
Jé Queue

3
và thật thận trọng khi sử dụng thụt lề để buộc thụt lề / mã giả mạo mã hóa để các nhà phát triển với các ý tưởng khoảng cách hài hước không bị đổ lỗi / chú thích cho tất cả các thay đổi định dạng
Tim Williscroft

3

Spaces hoặc Tab - Những gì Atwood thực sự nói là chọn một thứ và nhất quán trong dự án của bạn. Chén thánh duy nhất của định dạng mã là đảm bảo rằng nó nhất quán để kẻ thái nhân cách duy trì mã của bạn sau khi bạn không cảm thấy buộc phải khắc phục tình trạng này vĩnh viễn.

Điều đó nói rằng, nếu bạn đang làm việc trong Python hoặc bất kỳ ngôn ngữ nào khác, nơi khoảng trắng là một cấu trúc lập trình thực tế tôi không thể tưởng tượng được bằng cách sử dụng các tab.


4
Tôi sử dụng các tab. Tôi không biết bạn đã thực hiện bất kỳ chương trình Python nào chưa, nhưng đó là vấn đề thụt lề tương đối. Nếu dòng 1 là x thụt vào và dòng 2 là x + 1 thụt vào, nó được coi là thụt lề nhiều hơn. Sự thụt lề có thể là không gian kép, 4 khoảng trắng, tab, không quan trọng miễn là bạn nhất quán.
Macha

@Macha - Cảm ơn bạn đã phản hồi. Tôi chưa bao giờ làm việc phát triển Python nhưng tất cả những người đã nói với tôi rằng họ sử dụng không gian rất thú vị để gặp ai đó sử dụng các tab.

3
Tôi sử dụng các tab với python tại nơi làm việc. Kinh khủng thật.
rhettg

3

Tôi là một chàng trai 4 không gian, các tab không nhất quán.


5
Làm thế nào họ "không nhất quán"? Họ luôn là một nhân vật duy nhất đại diện cho một mức độ thụt đầu dòng. Đó là định nghĩa của sơ đồ thụt đầu dòng nhất quán. (Và bạn có thể cá nhân, mà không ảnh hưởng bất cứ ai khác, trực quan và việc này là bất kỳ cách nào bạn chọn là một cộng .)
Lightness Races ở Orbit

3

Rõ ràng các tab gây rối trong Delphi vì vậy tôi không sử dụng các tab trong Delphi.

Tuy nhiên, tôi làm mọi thứ khác bằng Emacs và luôn sử dụng các tab vì các tab của tôi đi chính xác nơi tôi muốn chúng đi.


Bạn có thể cung cấp một ví dụ về điều này? Tôi thực sự tò mò vì tôi đã sử dụng Delphi trong 15 năm và chưa bao giờ thấy điều này.
GrandmasterB

1
edn.embarcadero.com/article/10280#4.3 Đó chỉ là hướng dẫn về phong cách, nhưng chúng tôi đã có một số lỗi kỳ lạ mà tôi không thể giải thích được do các tab. Nó cũng có thể là do Visual Source Safe. Tôi không thể giải thích nó, nó chỉ là một phần của truyền thuyết của công ty chúng tôi.
Peter Turner

1
Vấn đề là cài đặt mặc định cho (ít nhất) một số phiên bản Delphi không khớp với các thành ngữ Delphi thông thường. Vì vậy, bạn kết thúc với mã có CẢ.
Gerry

3

Câu trả lời là không thể có một ký tự thụt thích hợp duy nhất cho mọi tình huống. Định dạng bằng cách sử dụng các ký tự là không linh hoạt và có thể gây ra xung đột khi các kiểu khác nhau được sử dụng trong một nhóm.

Phương pháp duy nhất để định dạng mã hoàn hảo và linh hoạt với các kiểu định dạng khác nhau là thực hiện nó hầu như, không có bất kỳ ký tự thụt đầu dòng nào. Trình soạn thảo mã duy nhất tôi biết hỗ trợ điều này mặc dù là trình soạn thảo được sử dụng trong mẫu bên dưới:

Để thể hiện định dạng ảo , ảnh chụp màn hình bên dưới là từ trình soạn thảo XSLT * sử dụng phương pháp thụt lề này (cũng có một đoạn video ngắn ở đây ). Mỗi ký tự trong XSLT đã được tô sáng màu vàng, nhằm mục đích minh họa, cho phép nhìn thấy rõ ràng các tab hoặc ký tự khoảng trắng trong nội dung. Việc thụt mã được xử lý bởi hệ thống kết xuất của trình soạn thảo điều chỉnh lề trái (có nền trắng).

nhập mô tả hình ảnh ở đây

Các ký tự không gian hàng đầu duy nhất đứng trước các dòng Sách , bởi vì đây là nội dung văn bản bằng chữ, không phải mã, các ký tự khoảng trắng này phải được giữ nguyên.

Với định dạng ảo, bạn chọn độ rộng thụt lề cho phù hợp với môi trường và kiểu thụt đầu dòng mà không ảnh hưởng đến bất kỳ ký tự nào trong tệp nguồn. Bạn thậm chí có thể đặt chiều rộng thụt thành 0, nếu bạn cần một chế độ xem phẳng của mã như dưới đây:

nhập mô tả hình ảnh ở đây

Để đối chiếu điều này với định dạng ký tự không gian, cùng một XSLT được mở trong trình chỉnh sửa không có định dạng ảo được chuyển đổi bởi trình định dạng tự động của trình soạn thảo đó sang:

nhập mô tả hình ảnh ở đây

Các khối màu vàng trống lớn hơn trong ảnh chụp màn hình ở trên hiển thị rõ ràng các ký tự khoảng trắng được thêm bởi trình định dạng của trình chỉnh sửa thông thường. Thật không may, giờ đây chúng không thể được phân biệt với nội dung thực nên XSLT sẽ phải được sửa đổi để khắc phục vấn đề này.

Tóm lược

XSLT có thể là một trường hợp cực đoan, nhưng nguyên tắc này đúng với nhiều ngôn ngữ lập trình: Các ký tự nên được sử dụng cho nội dung và một phương pháp thay thế được tìm kiếm khi định dạng.

** Tiết lộ: Trình chỉnh sửa XSLT với định dạng ảo được phát triển bởi chính công ty của tôi *


1
Đáng buồn thay, bạn có thể đi trước thời đại khoảng 50 năm. Ý tưởng thẳng thắn vô lý rằng các chương trình là chuỗi các nhân vật vẫn còn khắc sâu trong tâm trí của hầu hết các lập trình viên.
Tom Anderson

3

Không được đề cập cho đến bây giờ: Có các ngôn ngữ (Python, Haskell) trong đó vấn đề thụt lề. Nhưng 1 ký tự được tính là 1 ký tự, có thể là khoảng trắng hoặc tab để vết lõm mà trình biên dịch nhìn thấy có thể không giống với ký tự bạn nhìn thấy trên màn hình nếu bạn sử dụng tab.

Do đó, trong các ngôn ngữ như Haskell, không gian là phải. Trong Makefiles, TABS là phải. Trong tất cả các vấn đề khác, đó là vấn đề sở thích cá nhân và ngày nay không phải là vấn đề lớn - mọi biên tập viên đàng hoàng đều có lệnh "(dẫn đầu) đến khoảng trắng" và "(dẫn) khoảng trắng đến tab".


2

Tôi đã từng sử dụng các khoảng trắng, nhưng gần đây tôi đã sử dụng các tab hoàn toàn vì đó là những gì Eclipse được đặt thành khi cuối cùng tôi nhận thấy. Tất cả các nhà phát triển khác trong nhóm của tôi đều sử dụng Eclipse, do đó, việc chuẩn hóa các tab khi chúng tôi nhận ra rằng chúng tôi đã sử dụng chúng từ lâu và không có lý do gì để thay đổi không gian. Tôi đã rất ngạc nhiên bởi nó không phải là vấn đề.

Đặt kích thước tab được hiển thị thành 3 hoặc 5 ký tự trong IDE của bạn giúp đơn giản hóa rất nhiều việc phân biệt giữa các phần mã được thụt lề bởi các khoảng trắng (hầu như luôn luôn là 4 ngày này) và các ký tự được thụt lề bởi tab.


1

Rất nhiều tranh luận đã được đưa ra, nhưng không ai đề cập đến việc chúng ta có thể hướng tới đâu trong tương lai .

Tab cũng không gian!

Mã lý tưởng nên được coi là dữ liệu và không được lưu trữ trong bất kỳ định dạng văn bản cụ thể nào. Bất kỳ nhà phát triển có thể áp dụng quan điểm ưa thích của riêng mình. Hơn nữa, chế độ xem này không nên giới hạn chỉ trong văn bản , mà có thể bao gồm các bảng, bộ chọn màu và công thức toán học.

Ý tưởng này không quá xa vời. Đó là Trình soạn thảo lập trình định hướng ngôn ngữ (MPS) của JetBrain , lần đầu tiên khiến tôi nhận ra điều này giải quyết toàn bộ cuộc thảo luận, đồng thời bổ sung rất nhiều khả năng bổ sung. (Có, điều này là có thể với các trình soạn thảo, nhưng làm việc trực tiếp trên văn bản sẽ thêm rất nhiều sự phức tạp không cần thiết, trái ngược với cách tiếp cận mà MPS thực hiện.)

Trái ngược với các tab và khoảng trắng, có rất ít nhược điểm có thể được đề cập để làm việc trực tiếp trên các cây cú pháp trừu tượng . Tất cả những gì cần thiết là cho công nghệ phát triển thành một sản phẩm khả thi về mặt thương mại. Những dấu hiệu đầu tiên của điều này đang hiển thị. Được xây dựng chủ yếu dựa trên MPS, một trình soạn thảo hành động thương mại, Real Wax đã được tạo.

Tôi rất thích thấy một trong những người chơi lớn nhảy vào khái niệm về công nghệ này và xem điều gì sẽ xảy ra!


0

Không phải là tốt hơn, cũng không phải là tồi tệ hơn. Điều quan trọng duy nhất là phải nhất quán.

Nếu bạn là một nhóm, hãy chọn bất cứ thứ gì bạn thích. Xem xét hành vi mặc định của trình soạn thảo yêu thích của bạn, nhưng chọn bất cứ điều gì bạn thích.

Nếu bạn ở trong một đội, hãy làm những gì nhóm làm. Giai đoạn = Stage.

Trong các công việc khác nhau của tôi, tôi đã sử dụng hai không gian, bốn không gian, tám khoảng trắng, tab, khoảng trắng và tab, tôi nghĩ rằng tôi cũng có thể đã sử dụng một khoảng trắng. Tôi nói với biên tập viên của tôi phải làm gì sau đó tôi không nghĩ về nó nữa, biên tập viên làm việc chi tiết.

Điều khác duy nhất là đảm bảo bạn chọn một trình soạn thảo thông minh. Emacs hay vi? Bây giờ đó là một cuộc chiến thần thánh tôi sẵn sàng chiến đấu :-)

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.