Tab versus spasi — apa karakter lekukan yang tepat untuk semuanya, dalam setiap situasi, selamanya? [Tutup]

84

Standar pengkodean untuk kode yang dihosting di drupal.org menyarankan untuk menggunakan dua spasi untuk membuat indentasi kode; situs lain menyarankan untuk menggunakan tab untuk indentasi kode.

Apa karakter lekukan yang tepat untuk semuanya, dan dalam setiap situasi? Tolong jelaskan jawaban yang Anda berikan.

kiamlaluno
sumber
13
IDE default FTW - cukup tekan tombol tab dan lihat apa yang terjadi
user281377
Apa pun yang Anda pilih, itu harus digunakan oleh seluruh tim tetapi tidak ketika seseorang menggunakan tab ruang lain.
Murid
1
Saya mencoba mengedit ini untuk memperbaiki implikasi bahwa tab / spasi adalah satu-satunya cara untuk indentasi kode. Hasil edit dihapus, tetapi mudah-mudahan komentar ini tetap: Alih-alih karakter lekukan, mengapa tidak menggunakan margin kiri saja? - ini dapat sepenuhnya otomatis oleh editor dan pengolah kata telah melakukan ini selama beberapa dekade.
pgfearo
4
Saya benar-benar tidak berpikir harus ada jawaban "diterima" di sini. Fakta bahwa jawaban dengan suara lebih sedikit sebenarnya yang pertama adalah bukti dari itu: mengapa penanya harus mendapatkan kekuatan khusus (yaitu mampu menempatkan jawaban favorit mereka terlebih dahulu) hanya karena mereka mengajukan pertanyaan?
Dean Harding

Jawaban:

129

Spaces

Tab bisa berupa jumlah kolom berbeda tergantung pada lingkungan Anda, tetapi spasi selalu satu kolom.

Dalam hal berapa banyak spasi (atau tab) yang membentuk lekukan, lebih penting untuk konsisten di seluruh kode Anda daripada menggunakan nilai penghentian tab tertentu.

pengguna8
sumber
42
Paragraf kedua Anda salah; jawabannya 4!
Daenyth
5
@Daenyth - mungkin jika Anda menggunakan bahasa penjepit keriting. Kebanyakan Pascal / Delphi menggunakan 2.
Gerry
72
Mengapa saya harus dimandatkan ke 2 atau 4 SPASI indentasi Anda ketika TAB dapat diatur secara dinamis dan menunjukkan satu tingkat indentasi?
Jé Queue
3
@MGOwen Argumen waktu pengunduhan untuk pengkodean situs web dengan mudah diselesaikan saat ini dengan menggunakan sumber minifying pada css / javascript dan penghapusan spasi putih pada HTML. Lihat mod_pagespeed untuk melihat apa yang saya maksud.
Evan Plaice
42
"Tab bisa menjadi jumlah kolom yang berbeda tergantung pada lingkungan Anda" Ya, ini persis keuntungannya. Semua orang bisa mengaturnya sesuai selera dan bahagia.
Andrea
249

Tab

Sekarang, tentu saja, konsistensi lebih penting daripada salah satunya, dan IDE yang bagus membuat perbedaan dapat diabaikan. Yang mengatakan, titik utas ini adalah menjadi perang suci, jadi:

Saya lebih suka tab:

  • Mereka adalah karakter yang secara khusus dimaksudkan untuk indentasi
  • Mereka memungkinkan pengembang dengan preferensi berbeda dalam ukuran lekukan untuk mengubah bagaimana kode terlihat tanpa mengubah kode (pemisahan data dan presentasi untuk kemenangan pepatah!)
  • Tidak mungkin setengah inden sesuatu dengan tab. Jadi, ketika Anda menyalin kode dari beberapa situs web yang menggunakan 3 spasi ke file indentasi 4-ruang Anda, Anda tidak harus berurusan dengan misalignment.
Fishtoaster
sumber
12
Bagaimana dengan menyalin kode indentasi 3 spasi ke dalam file indentasi tab Anda, yang telah Anda atur tab Anda menjadi 3 spasi? Ketika Anda mengirim kode ke rekan senegaranya, mereka bertanya-tanya mengapa fungsi itu memiliki lekukan yang buruk!
Wayne Werner
27
Tab pada awalnya tidak dimaksudkan untuk indentasi, mereka dimaksudkan untuk tabulasi , dan melakukan pekerjaan yang mengerikan ...
Timwi
14
@Timwi: Wikipedia sepertinya mengatakan bahwa itu dimaksudkan untuk memindahkan kursor ke kumpulan kolom tetap berikutnya. Tidak terdengar seperti tabulasi adalah fungsi utama. Juga, saya mengacu pada era pasca-mesin tik.
Fishtoaster
40
Ditambah banyak programmer menghabiskan banyak waktu menulis html, css, dll, adalah fakta bahwa file dengan 4 spasi bukan tab adalah 5-15% lebih besar sebenarnya signifikan. Contoh: halaman ini Anda berada sekarang memuat setidaknya 10% lebih lambat dari yang seharusnya karena tim SE menggunakan spasi . Periksa sendiri.
MGOwen
23
Manfaat lain dari pendekatan ini - penekanan tombol lebih sedikit saat menggunakan tombol panah untuk navigasi kiri-kanan.
Nicole
117

Gunakan tab untuk membuat indentasi awal baris, satu tab per level indent, dan biarkan semua orang memilih seberapa lebar yang mereka inginkan.

Gunakan spasi jika Anda menyejajarkan karakter dalam satu baris, sehingga mereka selalu berbaris terlepas dari ukuran tab.

Dan temukan dan pukul semua pembuat perangkat lunak awal yang membiarkan hal bodoh ini menjadi masalah.
(Serius, mengapa ini bahkan sesuatu yang dibahas? Selanjutnya Anda akan memberi tahu saya bahwa Anda juga ingin menggunakan beberapa karakter untuk jeda baris!)

Peter Boughton
sumber
33
Ya ya ya ya ya. Seratus persen ya. Ini memungkinkan semua orang mengatur lebar tab mereka sendiri sambil mempertahankan pemformatan tabular. Jika Anda khawatir menyimpan 80 kolom (seperti seharusnya!), Maka pilih saja ukuran tab maksimum yang diharapkan (seperti 4) dan simpan di dalam margin untuk tab dengan lebar itu. Jujur saja, apakah ini sangat sulit?
Jon Purdy
Ya, tapi jangan gunakan spasi untuk berbaris dalam satu baris. Rekan Anda mungkin menggunakan font proporsional sehingga karya seni ASCII Anda akan terlihat aneh di layar mereka.
paperjam
3
Ini adalah satu-satunya jawaban yang benar di sini
J.Ashworth
76

Tab

  • memungkinkan kesalahan menjadi lebih terlihat , itu menjengkelkan untuk mengelola mikro untuk ruang.
  • konsisten , mereka hanya digunakan untuk indentasi, kecuali Anda berkomentar salah.
  • dapat disesuaikan , Anda dapat menentukan dalam opsi editor seberapa luas mereka.
  • lebih produktif , mengapa mengetik 4 spasi saat kamu bisa menekan 1 tab.
  • ambil ukuran kurang dari beberapa spasi.
  • mengambil lebih banyak ruang daripada satu ruang.
  • membutuhkan waktu lebih sedikit untuk melewati .
  • cenderung bekerja lebih baik dalam IDE.

Spasi harus digunakan di mana tab sama sekali tidak berguna.

Bahkan untuk menyelaraskan parameter dan komentar, tab masih berfungsi lebih baik .

Tom Wijsman
sumber
24
wrt "lebih produktif", secara pribadi saya menekan TAB dan membiarkan IDE melakukan konversi untuk jumlah karakter ruang yang sesuai untuk diperkenalkan. Mungkin Anda perlu memutakhirkan: p?
Matthieu M.
3
-1: Kesalahan yang lebih nyata: tidak benar; konsisten: sulit karena dapat disesuaikan: ya, tetapi juga merugikan pada saat yang sama; lebih produktif: tidak benar, hampir semua id dapat mengonversi tab menjadi spasi; ukuran kurang: ya, tapi praktis? tidak; lebih sedikit waktu: tidak dengan IDE yang masuk akal; cenderung bekerja lebih baik: tidak sama sekali jika Anda menggunakan banyak lingkungan dan alat
MaR
@ MAr: Kesalahan nyata adalah benar, lebar tab lebih besar. Juga ... Python! Tab konsisten karena Tab tunggal adalah lekukan, sedangkan Anda harus menentukan berapa banyak ruang yang akan Anda gunakan untuk lekukan. Kustomisasi adalah keuntungan. Anda menggunakan tab di tempat pertama, jadi lebih produktif. Sepertinya Anda bahkan tidak bisa memberikan alasan yang bagus mengapa itu tidak praktis, pembenci akan membenci ...;)
Tamara Wijsman
@ TomWij: Bagaimana tab lebih besar dari jumlah ruang yang setara? Python sebenarnya satu-satunya bahasa yang mendapatkan hak spasi putih untuk menggunakan tab dengan aman (tapi tetap saja - ia hanya menawarkan sedikit keuntungan dibandingkan dengan "menyisipkan spasi"). Coba juga bahasa lain, lingkungan lama, diff / penggabungan, terminal, sccs untuk melihat mengapa tab masih "ideal" utopis.
MaR
@ MAr: Di mana saya menyatakan 'jumlah spasi setara'? Saya sudah mencoba semua itu, tab bekerja dengan baik di dalamnya!
Tamara Wijsman
41

Semua argumen untuk tab bagus dalam teori. Tapi...

Secara teori, praktik dan teori adalah sama. Dalam praktiknya, mereka tidak.

Ya, dengan tab Anda dapat menentukan tingkat lekukan Anda. Dan ya, Anda dapat menggunakan kombinasi tab dan spasi untuk menyelaraskan sesuatu. Dan di dunia yang ideal itu akan terjadi

Pada kenyataannya, Anda tidak dapat melihat perbedaan antara spasi dan tab, mereka selalu keliru ketika memindahkan kode, dan melihat kode di program lain yang memiliki tab yang diatur ke 8 kolom adalah gangguan.

Saya dulu menggunakan tab. Kemudian saya mulai bekerja sebagai bagian dari tim dan membagikan kode. Saya dengan cepat menjadi pendukung ruang. Jadi, sementara saya bisa bersimpati dengan utopia tab, saya tidak bisa membayangkan tidak menggunakan spasi.

g.
sumber
6
Anda bisa mendapatkan editor seperti Kate yang menyajikan tab dengan karakter 'hantu' - Saya dapat dengan mudah melihat tab vs spasi saat pengkodean.
HorusKol
8
Setiap editor memiliki opsi "tampilkan spasi" sekarang, dan Visual Studio memiliki opsi 'tabify'
Chris S
2
Argumen yang bagus. Itulah alasan saya berhenti berusaha meyakinkan orang bahwa tab lebih logis. Bahkan programmer yang harus terbiasa dengan pemikiran abstrak tampaknya membingungkan tab dan spasi ("jika terlihat seperti empat spasi, maka itu pasti empat spasi!"). Paku di peti mati bagi saya adalah bahwa tampaknya tidak mungkin untuk mengkonfigurasi Emacs hanya indentasi dengan tab.
Martin Vilcans
3
+1 Utopia tab sangat bagus, tetapi setiap kali saya memindahkan kode antara editor dengan lebar tab berbeda, kode ini telah kacau dan tidak selaras. Terlalu mudah untuk diam-diam melakukan hal yang salah dengan tab.
Mankarse
Saya dulu menggunakan tab juga, tapi saya mengalami masalah dengan beberapa IDE yang tidak bisa menyisipkan spasi untuk garis lanjutan dan saya benci untuk mengganti semua tab yang dimasukkan secara otomatis dengan spasi (Visual Studio adalah salah satunya). Jadi saya hanya bertahan dengan ruang. Ditambah spasi memungkinkan Anda untuk menggunakan inden setengah-ukuran untuk hal-hal seperti public:dalam deklarasi kelas C ++ sehingga mereka terlihat lebih cantik (terutama dengan kelas bersarang).
szx
31

Beberapa pendapat relevan yang mungkin menarik:

Fishtoaster
sumber
105
Hanya karena Anda terkenal tidak membuat Anda benar.
Jé Queue
@ Xepoch: sudahkah Anda membaca alasannya :)?
Matthieu M.
5
@ Matthieu M., ya saya sudah membaca masing-masing, tetapi masih tidak setuju. Saya juga tidak suka zaitun tetapi tidak membuat saya salah karena orang lain menyukainya. Saya merasa menggelikan bahwa orang-orang tidak akan menggunakan tab untuk lekukan, tetapi inilah mengapa mereka menyebutnya perang suci CS ...
Jé Queue
2
@ Xepoch: ya, saya kira semua orang berhak atas pendapat seseorang :) Saya pikir meskipun Guido telah menunjuk masalah utama: mencampur tab dan spasi adalah jahat, karena keduanya muncul sebagai "ruang kosong" bagi pengguna.
Matthieu M.
3
@Fishtoaster: Ketika Anda mengatakan bahwa Joel mengatakan spasi, bukankah tautannya harus dengan kutipan Joel yang sebenarnya? Tautan hanya menuju ke forum JoelOnSoftware di mana beberapa ppl (kemungkinan besar tidak berbicara untuk Joel) mendiskusikan tab vs spasi.
Andreas Magnusson
23

Tab untuk menang.

Joel Barsotti
sumber
20

Saya benar-benar. benci. 4. spasi.

Mengapa? Terutama karena saya lelah menavigasi kode saya dengan keyboard dan harus terus menekan left left left leftuntuk pergi ke satu lekukan. Ini lahir dari versi awal Notepad ++ dan bahkan notepad Windows biasa di mana tidak ada yang namanya tombol format. Saya memiliki begitu banyak masalah ketika orang hanya akan menggunakan 3 ketika saya telah menggunakan 4 di mana saja antara lain.

Alasan lainnya adalah bahwa karakter tab ada secara khusus untuk lekukan , dan baru kemudian diadopsi untuk navigasi. Mengapa kita lakukan space space space spaceketika sederhana tabakan berhasil? Mengapa IDE harus berurusan dengan 2-5 kode spasi dan format dengan benar ketika tab sederhana dan opsi preferensi akan berfungsi?

Sayangnya saya adalah minoritas.

TheLQ
sumber
31
Anda tidak efisien dalam penelusuran kode keyboard. Anda harus menggunakan CTRL + LEFT dan CTRL + RIGHT untuk melewati spasi dan token. Jadi lekukan tidak masalah.
Wizard79
7
Di mana kesalahpahaman ini berasal dari "tab ada khusus untuk indentasi"? Tab disebut tab (tabulasi) karena tab diciptakan untuk tabulasi, bukan indentasi , dan mereka melakukan pekerjaan yang mengerikan di keduanya.
Timwi
7
@ Lorenzo: Anda tidak efisien dalam penelusuran kode keyboard. Anda harus menggunakan wdan b(atau edan ge) untuk melewati spasi putih dan token: P
R. Martinho Fernandes
6
Demi advokasi jahat: jangan berikan kode berformat buruk pada editor yang Anda anggap lebih rendah. Gunakan tab.
Jon Purdy
11
@Timwi: maaf untuk necro, tetapi kunci tab komputer TIDAK ditemukan untuk tabulasi. Versi TYPEWRITER dari kunci itu, tetapi pada saat keyboard berevolusi untuk digunakan dengan komputer, tombol tab digunakan untuk menjorok lebih dari tabulasi, dan istilah "tab" telah menjadi identik dengan indentasi. Tab untuk KOMPUTER adalah indentasi, dan hanya berdasarkan kebiasaan bahwa nama kunci cocok dengan nama mesin tik. Argumen Anda mirip dengan mengklaim bahwa kunci pengembalian komputer dimaksudkan untuk memulai baris baru dan memindahkan kursor ke paling kiri, karena itulah
gunanya
12

Saya pribadi suka menggunakan tab dalam segala hal, karena setiap pengembang dapat mengontrol jumlah lekukan per tab. Dengan begitu Anda mendapatkan fleksibilitas dalam tampilan.

Yang sedang berkata, saya biasanya meniru gaya pengkodean apa pun dalam file untuk memulai (karena saya menghabiskan banyak waktu melakukan pekerjaan pemeliharaan).

Brandon
sumber
3
Itu rusak segera setelah Anda mulai menjorok untuk apa pun selain bersarang pernyataan. Misalnya jika Anda ingin menyelaraskan argumen fungsi pada kolom yang sama, satu argumen per baris. Itu mungkin dengan mencampur tab dan spasi tetapi sangat membosankan.
finnw
2
Ini tidak membosankan sama sekali, karena itu berarti Anda dapat melakukan tab sebagian besar jalan di sana dan kemudian hanya menggunakan beberapa ruang, daripada harus mengetik puluhan ruang hanya untuk sampai ke kolom yang tepat.
Jordan Reiter
1
@finnw Anda menganggap semua orang menggunakan font monospace - pada 2012, sejumlah besar pengembang menggunakan proporsional. Jika Anda memiliki karakter non-spasi putih di sebelah kiri argumen pertama Anda, tidak ada cara untuk menjamin argumen pada baris berikutnya akan selaras untuk semua orang.
paperjam
Anda belum pernah mencoba menulis HAML, bukan?
alt
2
Saya benci mengatakan ini, tapi saya tidak bisa membayangkan pemrograman dalam font dengan lebar variabel. Semata-mata wrongness itu kerdil standar brace, tab vs spasi, semuanya ... aku hanya mulai tua? (Apa yang terjadi ketika Anda mendapatkan pesan kesalahan dengan garis dan nomor kolom?)
lunchmeat317
10

Saya tidak berpikir bahwa ada yang namanya lekukan yang tepat (setidaknya bukan tanpa perang kecil).

Secara pribadi saya suka empat ruang. Mereka memungkinkan saya untuk membaca kode lebih cepat dan mereka terlihat sama di setiap editor - bahkan Vi.

Josip Medved
sumber
9
vi (atau lebih tepatnya vim) adalah salah satu editor yang lebih baik untuk bekerja dengan tab, Selain dapat mengatur lebar tab dan secara otomatis meluas ke spasi (seperti kebanyakan editor dapat) Anda juga memiliki softtabstopopsi retabdan retab!perintah dan .
finnw
Akankah bayi benar-benar mati jika kita hanya mengatakan 4 ruang, di mana-mana, selalu, tidak ada pilihan - dan pindah?
MGOwen
2
Empat ruang tidak terlihat sama di mana-mana. Lebih banyak programmer sekarang memilih font proporsional dalam IDE mereka untuk pengalaman pengkodean yang lebih menyenangkan dan produktif. Empat ruang dapat terlihat seperti lekukan yang cukup kecil dalam situasi ini.
paperjam
8

Spaces, karena ketika Anda menyelaraskan komentar ke kanan kode, atau daftar parameter fungsi, atau ekspresi multiline kompleks, atau hal-hal semacam itu, Anda ingin karya indah Anda tampil tepat untuk semua orang . Jika Anda menggunakan tab dan memungkinkan orang untuk mengatur tabstop mereka secara berbeda, mereka akan memecah keselarasan untuk semua kecuali kasus indentasi kode yang paling sederhana.

Selain itu, sangat jelas bahwa setiap orang di dunia harus menggunakan vim, yang membuatnya sepele untuk indentasi, lekukan, dan menavigasi melalui "tab stops" bahkan dalam file yang diindentasi ruang.

hobbs
sumber
Itu adalah fitur yang sangat bagus dari banyak editor - kemampuan untuk dengan cepat melewati gundukan dan gundukan ruang.
Christian Mann
18
Kedengarannya seperti Anda menggambar seni ASCII daripada coding.
rmac
3
Saya akan menambahkan: Tab tidak dapat digunakan untuk penyelarasan. Jika Anda pengguna tab dan ingin menyelaraskan, Anda harus terlebih dahulu mengetik jumlah tab yang benar untuk indentasi dan MAKA jumlah ruang yang benar untuk perataan. Hanya dengan begitu Anda melihat kode yang diformat tab tepat di semua pengguna dan editor.
MaR
6

Tab adalah pilihan alami dan ortodoks, karena menurut definisi digunakan untuk indentasi.

Sayangnya, tab diterapkan secara tidak merata, sehingga satu-satunya solusi dunia nyata adalah 4 ruang.

Wizard79
sumber
8
Sejak kapan tab (tabulasi) digunakan untuk lekukan "menurut definisi"? Menurut definisi mereka, mereka diciptakan untuk tabulasi (meskipun mereka juga melakukan pekerjaan yang mengerikan).
Timwi
2
Secara teknis, tombol kembali diciptakan untuk menggerakkan kepala mesin ketik ke depan garis, sedangkan pindah ke baris berikutnya dilakukan dengan memutar rol. Kemudian, tombol kembali juga akan memajukan roller secara otomatis juga. Anda tidak melihat orang-orang terpaku pada tombol return / enter. Tombol tab jelas ditambahkan ke komputer untuk melakukan lekukan. Ini analog digital dari halte tab, yang saya miliki pada mesin tik non-listrik saya yang lama. Tab stops dapat diatur untuk memindahkan roller ke posisi apa pun yang Anda pilih, hampir identik dengan peran tombol tab saat ini dalam lekukan.
Jordan Reiter
@JordanReiter RE: "Anda tidak melihat orang-orang digantung pada tombol kembali / masuk.": Pernahkah Anda menghadapi CR (mewakili menggerakkan kepala mesin ketik ke bagian depan baris) / LF (mewakili memutar roller ke baris berikutnya) masalah?
Max Nanasy
1
Ya, tapi itu benar-benar masalah OS, bukan masalah keyboard. Tidak masalah komputer apa yang Anda aktifkan, Anda berharap menekan tombol enter atau return untuk membawa Anda ke tautan berikutnya. Anda tidak menggunakan satu kunci untuk mengeluarkan umpan baris dan satu untuk mengeluarkan carriage return.
Jordan Reiter
4

Anda jelas membutuhkan pendekatan kombinasi.

Jika Anda berbagi kode dengan pengembang lain, Anda perlu membuat standar, dan karena itu tidak mungkin (koff koff), Anda perlu membuat semua orang melakukan empat spasi.

Maka Anda memerlukan editor yang cukup pintar untuk tidak bodoh tentang hal itu, untuk mengetahui bahwa itu harus memperlakukan garis dengan empat spasi di depannya seperti itu indentasi. Editor IDE atau programmer modern dapat secara otomatis mengalirkan kode dengan spasi alih-alih tab.

Dan Ray
sumber
4

Mengapa seseorang tidak dapat menerapkan ini:

  • kode disimpan dalam format ringkas yang bermanfaat bagi sistem yang dimaksud
  • karena setiap pengembang membuka kode, itu diformat persis seperti yang mereka inginkan
  • setelah selesai, kembali ke format ringkas

Semua orang senang karena mereka semua melihat format 'sendiri'

Apakah itu sangat sulit?

Adolf bawang putih
sumber
2
Karena saya tidak punya cukup waktu luang untuk memperbaiki semua editor dan IDE yang ada yang digunakan orang, dan - bahkan jika saya lakukan - meyakinkan semua orang untuk meningkatkan akan lebih sulit.
Peter Boughton
Saya yakin mereka bisa membangunnya ke SVN atau menemukan cara lain untuk meninggalkan alat akhir darinya.
Adolf bawang putih
13
Kedengarannya seperti tab. Setiap pengembang membuka file dan mendapatkan lebar lekukan yang mereka inginkan.
rmac
1
Anda sudah dapat mengatur RCS atau CVS untuk menggunakan indentprogram ini.
Jé Queue
3
dan bijaksana untuk menggunakan indentasi untuk memaksa indentasi / kode untuk meramalkan standarisasi sehingga pengembang dengan ide spasi lucu tidak bisa disalahkan / dijelaskan untuk semua perubahan format
Tim Williscroft
3

Spaces or Tabs - Apa yang benar-benar dikatakan Atwood adalah memilih satu hal dan konsisten dalam proyek Anda. Satu-satunya grail suci pemformatan kode adalah memastikan bahwa konsisten sehingga psikopat yang menjaga kode Anda setelah Anda tidak merasa terdorong untuk memperbaiki situasi secara permanen.

Yang mengatakan, jika Anda bekerja di Python atau bahasa lain di mana spasi putih adalah konstruksi pemrograman yang sebenarnya saya tidak bisa membayangkan menggunakan tab.

Noah Goodrich
sumber
4
Saya menggunakan tab. Saya tidak tahu apakah Anda telah melakukan pemrograman Python, tapi itu lekukan relatif yang penting. Jika baris 1 adalah inden dalam, dan baris 2 adalah inden dalam +1, itu dianggap lebih indentasi. Indentasi dapat berupa spasi ganda, spasi 4, tab, tidak masalah selama Anda konsisten.
Macha
@ Macha - Terima kasih atas umpan baliknya. Saya tidak pernah bekerja melakukan pengembangan Python tetapi saya yang memiliki semua mengatakan kepada saya bahwa mereka menggunakan spasi sehingga menarik untuk bertemu seseorang yang menggunakan tab.
Noah Goodrich
3
Saya menggunakan tab dengan python di tempat kerja. Itu mengerikan.
rhettg
3

Saya tipe pria 4 ruang, tab saja tidak konsisten.

Walter
sumber
5
Bagaimana mereka "tidak konsisten"? Mereka selalu merupakan karakter tunggal yang mewakili satu tingkat indentasi. Itulah definisi skema indentasi yang konsisten. (Dan Anda dapat secara pribadi, tanpa mempengaruhi orang lain, secara visual menunjukkan bahwa cara apa pun yang Anda pilih adalah nilai tambah .)
Lightness Races di Orbit
3

Rupanya tab mengacaukan hal-hal di Delphi jadi saya tidak menggunakan tab di Delphi.

Namun saya melakukan semua hal lain menggunakan Emacs dan selalu menggunakan tab karena tab saya tepat di tempat yang saya inginkan.

Peter Turner
sumber
Bisakah Anda memberikan contohnya? Sejujurnya saya ingin tahu karena saya telah menggunakan Delphi selama 15 tahun dan belum pernah melihat ini.
GrandmasterB
1
edn.embarcadero.com/article/10280#4.3 Itu hanya panduan gaya, tetapi kami memiliki beberapa kesalahan aneh yang tidak bisa saya jelaskan karena tab. Mungkin juga karena Visual Source Safe. Saya tidak bisa menjelaskannya, itu hanya bagian dari pengetahuan perusahaan kami.
Peter Turner
1
Masalahnya adalah bahwa instalasi default untuk (setidaknya) beberapa versi Delphi tidak cocok dengan idiom Delphi biasa. Jadi Anda berakhir dengan kode yang memiliki KEDUA.
Gerry
3

Jawabannya adalah tidak ada karakter indentasi tunggal yang tepat untuk setiap situasi. Memformat menggunakan karakter tidak fleksibel dan dapat menyebabkan konflik ketika gaya yang berbeda digunakan dalam tim.

Satu-satunya metode untuk memformat kode tanpa cacat dan fleksibel dengan gaya format yang berbeda adalah melakukannya secara virtual, yaitu tanpa karakter lekukan. Satu-satunya editor kode yang saya tahu mendukung ini adalah yang digunakan dalam contoh di bawah ini:

Untuk mendemonstrasikan pemformatan virtual , tangkapan layar di bawah ini dari editor XSLT * yang menggunakan metode indentasi ini (ada juga video pendek di sini ). Setiap karakter dalam XSLT telah disorot dengan warna kuning, untuk tujuan ilustrasi, untuk memungkinkan satu-satunya tab atau karakter spasi dalam konten yang terlihat jelas. Lekukan kode ditangani oleh sistem render editor menyesuaikan margin kiri (yang memiliki latar belakang putih).

masukkan deskripsi gambar di sini

Satu-satunya karakter spasi terkemuka mendahului baris Buku , karena ini adalah konten teks literal, bukan kode, karakter spasi ini harus dipertahankan.

Dengan pemformatan virtual, Anda memilih lebar lekukan yang sesuai dengan lingkungan dan gaya lekukan tanpa memengaruhi karakter apa pun di file sumber. Anda bahkan dapat mengatur lebar lekukan ke 0, jika Anda memerlukan tampilan kode yang rata seperti yang ditunjukkan di bawah ini:

masukkan deskripsi gambar di sini

Untuk membandingkan ini dengan pemformatan karakter spasi, XSLT yang sama dibuka di editor tanpa pemformatan virtual diubah oleh formatter editor otomatis untuk ini:

masukkan deskripsi gambar di sini

Blok kuning kosong yang lebih besar pada tangkapan layar di atas dengan jelas menunjukkan karakter spasi yang ditambahkan oleh formatter dari editor konvensional. Sayangnya, ini sekarang tidak dapat dibedakan dari konten nyata sehingga XSLT harus dimodifikasi untuk memperbaiki masalah ini.

Ringkasan

XSLT mungkin merupakan kasus ekstrem, tetapi prinsip ini berlaku untuk banyak bahasa pemrograman: Karakter harus digunakan untuk konten dan metode alternatif yang dicari ketika datang ke format.

** Pengungkapan: Editor XSLT dengan format virtual dikembangkan oleh perusahaan saya sendiri *

pgfearo
sumber
1
Sayangnya, Anda mungkin sekitar 50 tahun lebih awal dari waktu Anda. Gagasan yang terus terang absurd bahwa program adalah urutan karakter masih sangat berurat berakar di benak kebanyakan programmer.
Tom Anderson
3

Tidak disebutkan sampai sekarang: Ada bahasa (Python, Haskell) di mana lekukan penting. Tapi 1 karakter dihitung sebagai 1 karakter, baik itu spasi atau tab sehingga lekukan yang dilihat oleh kompiler mungkin tidak sama dengan yang Anda lihat di layar jika Anda menggunakan tab.

Oleh karena itu, dalam bahasa seperti Haskell, spasi adalah suatu keharusan. Di Makefiles, TABS adalah suatu keharusan. Dalam semua yang lain, ini adalah masalah selera pribadi dan saat ini tidak banyak - setiap editor yang layak memiliki perintah "(memimpin) tab ke spasi" dan "(memimpin) spasi ke tab".

Ingo
sumber
2

Saya dulu menggunakan spasi, tetapi saya telah menggunakan tab akhir-akhir ini semata-mata karena itulah yang diatur Eclipse ketika akhirnya saya perhatikan. Semua pengembang lain di tim saya menggunakan Eclipse, jadi masuk akal untuk melakukan standarisasi pada tab ketika kami menyadari bahwa kami sudah menggunakannya sejak lama dan tidak ada alasan untuk repot-repot beralih ke spasi. Saya terkejut dengan banyaknya masalah yang terjadi.

Mengatur ukuran tab yang ditampilkan ke 3 atau 5 karakter di IDE Anda sangat memudahkan membedakan antara bagian kode yang diindentasi oleh spasi (hampir selalu 4 hari ini) dan yang diindentasi oleh tab.

Pakaian Shabby
sumber
1

Banyak argumen telah diberikan, tetapi tidak ada yang menyebutkan di mana kita bisa menuju di masa depan .

Tab atau spasi!

Idealnya kode harus dianggap data, dan tidak disimpan dalam format teks tertentu. Setiap pengembang dapat menerapkan tampilan yang diinginkannya sendiri. Selain itu, tampilan ini tidak boleh terbatas pada teks saja , tetapi dapat mencakup tabel, pemilih warna dan rumus matematika.

Gagasan ini tidak terlalu dibuat-buat. Itu adalah editor Pemrograman Berorientasi Bahasa JetBrain, Meta Programming System (MPS) yang pertama kali membuat saya menyadari bahwa ini menyelesaikan seluruh diskusi, sekaligus menambahkan banyak kemungkinan tambahan. (Ya ini dimungkinkan dengan plugin editor, tetapi bekerja pada teks secara langsung menambahkan begitu banyak kerumitan yang tidak perlu, yang bertentangan dengan pendekatan yang dilakukan MPS.)

Berbeda dengan tab dan spasi, ada sedikit kerugian yang dapat disebutkan untuk bekerja secara langsung pada pohon sintaksis abstrak . Semua yang diperlukan adalah agar teknologi matang untuk produk yang layak secara komersial. Tanda-tanda pertama ini muncul. Sebagian besar dibangun di atas MPS, editor tindakan komersial, Realaxy telah dibuat.

Saya ingin melihat salah satu pemain besar melompat pada konsep teknologi ini dan melihat apa yang terjadi!

Steven Jeuris
sumber
0

Tidak ada yang lebih baik, tidak ada yang lebih buruk. Satu-satunya hal yang penting adalah konsisten.

Jika Anda adalah tim yang terdiri dari satu, pilih apa pun yang Anda suka. Pertimbangkan perilaku default editor favorit Anda, tetapi pilih apa pun yang Anda suka.

Jika Anda berada dalam tim, lakukan apa yang dilakukan tim. Titik.

Dalam berbagai pekerjaan saya, saya telah menggunakan dua spasi, empat spasi, delapan spasi, tab, spasi-dan-tab, saya pikir saya mungkin juga menggunakan satu spasi. Saya memberi tahu editor saya apa yang harus dilakukan maka saya tidak memikirkannya lagi, editor mengerjakan perinciannya.

Satu-satunya hal lain adalah memastikan Anda memilih editor yang pintar. Emacs atau vi? Nah, itu perang suci yang ingin saya lawan :-)

Bryan Oakley
sumber