it-swarm-id.com

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

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.

84
kiamlaluno

Spasi

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.

129
user8

Tab

Sekarang, tentu saja, konsistensi lebih penting daripada salah satunya, dan IDE yang baik membuat perbedaan diabaikan. Yang mengatakan, inti dari 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.
248
Fishtoaster

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

Gunakan spasi jika Anda mengantri karakter di dalam sebuah garis, jadi 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!)

117
Peter Boughton

Tab

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

Spasi harus digunakan di mana tab benar-benar tidak berguna.

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

76
Tamara Wijsman

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 indentasi 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 merupakan 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.

41
g .
31
Fishtoaster

Tab untuk menang.

23
Joel Barsotti

Saya benar-benar. benci. 4. spasi.

Mengapa? Terutama karena saya lelah menavigasi kode saya dengan keyboard dan harus terus menekan leftleftleftleft untuk membahas satu indentasi. 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 khusus untuk indentasi, dan baru kemudian diadopsi untuk navigasi. Mengapa kita melakukan spacespacespacespace ketika sederhana tab akan bekerja? 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.

20
TheLQ

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).

12
Brandon

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.

10
Josip Medved

Spaces, karena ketika Anda menyelaraskan komentar ke kanan kode, atau daftar parameter fungsi, atau ekspresi multiline yang 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 merusak penyelarasan 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.

8
hobbs

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.

6
Wizard79

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 itu, untuk mengetahui bahwa itu harus memperlakukan garis dengan empat spasi di depannya seperti itu indentasi. Setiap modern IDE atau editor programer dapat secara otomatis mengalirkan kode dengan spasi alih-alih tab.

4
Dan Ray

Mengapa seseorang tidak dapat menerapkan ini:

  • kode disimpan dalam format ringkas yang bermanfaat bagi sistem yang dimaksud
  • karena setiap dev 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?

4
adolf garlic

Saya tipe pria 4 ruang, tab saja tidak konsisten.

3
Walter

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 format 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).

enter image description here

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 mempengaruhi 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:

enter image description here

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

enter image description here

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 *

3
pgfearo

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 untuk spasi" dan "(memimpin) spasi ke tab".

3
Ingo

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 adalah konstruksi pemrograman yang sebenarnya saya tidak bisa membayangkan menggunakan tab.

3
Noah Goodrich

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.

3
Peter Turner

Saya dulu menggunakan spasi, tapi 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 menjadi 3 atau 5 karakter dalam IDE Anda sangat menyederhanakan membedakan antara bagian kode yang diindentasikan dengan spasi (hampir selalu 4 hari ini) dan yang diindentasi oleh tab.

2
Shabbyrobe

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 menyertakan tabel, pemilih warna dan rumus matematika.

Gagasan ini tidak terlalu dibuat-buat. Itu adalah JetBrain's Pemrograman Berorientasi Bahasa editor Meta Programming System (MPS) yang pertama kali membuat saya menyadari ini menyelesaikan seluruh diskusi, secara bersamaan 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 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, Galaxy telah dibuat.

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

1
Steven Jeuris

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 ruang, delapan ruang, tab, spasi-dan-tab, saya pikir saya mungkin juga menggunakan satu ruang. 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? Sekarang it perang suci aku bersedia bertarung :-)

0
Bryan Oakley