Mungkin saya sendirian dalam hal ini, tetapi beberapa hal mengganggu saya seperti orang yang indentasi menggunakan spasi daripada tab. Bagaimana cara mengetik SpaceSpaceSpaceSpacelebih mudah dan lebih intuitif daripada mengetik Tab? Tentu, lebar tab adalah variabel, tapi ini jauh lebih menunjukkan ruang lekukan daripada spasi. Hal yang sama berlaku untuk backspacing; backspace sekali atau empat kali?
Mengapa bahasa seperti Python merekomendasikan penggunaan spasi di atas tab?
indentation
Naftuli Kay
sumber
sumber
tab
. Jika Anda tidak dapat mengonfigurasi itu di editor favorit Anda, Anda memerlukan editor yang lebih baik.Jawaban:
Konsistensi, terutama.
Juga, sesuatu yang kadang muncul yang sebenarnya menggunakan spasi putih - seperti Python: Katakan padaku, apa yang akan terjadi jika saya menjalankan cuplikan kode berikut?
Lalu ada kasus-kasus yang membuat frustasi ketika satu editor pengembang memiliki tab yang diatur ke 8 spasi, dan yang lain mengaturnya menjadi 4 dan seseorang menggunakan 5 untuk beberapa alasan aneh ... Ini mungkin terlihat sangat normal pada satu workstation, tetapi kemudian ketika itu check in ke SVN dan pembaruan orang lain, mereka akan melihat kekacauan yang mengerikan, mengerikan.
Jadi itu adalah dua alasan bagus untuk selalu konsisten, apakah itu spasi atau tab.
Namun, spasi memungkinkan kontrol yang jauh lebih besar atas lekukan daripada tab, dan tidak memerlukan konfigurasi khusus di editor agar dapat bekerja. (Meskipun dapat dibuat lebih mudah - misalnya, dalam vim, cukup gunakan
set expandtab
untuk menyisipkan spasi setiap kali Anda menekan tab)EDIT: Dan cukup mengejutkan, situs ini tampaknya telah menormalkan tab saya menjadi spasi sehingga browser dapat menampilkannya dengan benar. Klik "edit" untuk melihat aslinya, tab disertakan;)
sumber
Ini adalah diskusi yang bagus tentang indentasi dan spasi putih dengan Python; dari artikel:
Mengenai argumen Anda tentang menekan bilah spasi atau tombol spasi mundur 2 atau lebih kali, karena sebagian besar editor kode sumber akan menyisipkan sejumlah ruang yang dapat dikonfigurasi dengan satu kali penekanan tombol tab, dan sama-sama tidak membuat lekukan, tidak ada lagi tombol yang ditekan saat menggunakan spasi untuk lekukan.
Untuk saya sendiri, saya lebih suka spasi karena kode selalu ditampilkan dengan jumlah indentasi yang sama, apakah saya melihatnya dalam IDE, atau
less
, atau Notepad; yaitu ruang lebih portabel.sumber
Dalam lekukan Python mengontrol aliran program dan sebagainya sangat penting.
Jika Anda mengambil kode yang diformat dengan tab dan menyalinnya sehingga tab diubah atau hilang, struktur kode dihancurkan. Spasi selalu spasi = jauh lebih aman.
Jika keausan pada bilah ruang membuat Anda khawatir, editor Anda mungkin dapat diatur untuk mengonversi tab menjadi spasi secara otomatis.
sumber
.vimrc
saya :)set softtabstop=4
, dan baik TAB maupun BACKSPACE akan menggunakan 4 spasi sebagai tab. (Ya, untuk setiap tabstop, perlakukan lebar sebagai 4 spasi)Spasi harus selalu digunakan, karena tab saja tidak cukup fleksibel untuk banyak gaya, dan pencampuran tab dan spasi (hampir) selalu menghasilkan kekacauan mutlak.
Untuk contoh satu gaya yang umumnya membutuhkan ruang, pertimbangkan sesuatu seperti:
Kecuali Anda bersedia untuk menamai ulang semua fungsi Anda menjadi kelipatan tepat dari ukuran tab (minus satu untuk tanda kurung) tab saja tidak akan melakukan ini.
Mengenai pencampuran tab dan spasi, Anda hampir segera mengalami masalah serius: tab tidak secara konsisten diperluas dengan cara yang sama. Beberapa perangkat lunak memperlakukan tab sebagai setara dengan jumlah ruang tertentu. Perangkat lunak lain akan memperluas modulo tab ke sejumlah spasi tertentu - mis. Item setelah tab akan selalu dimulai dari nomor kolom yang merupakan kelipatan dari (katakanlah) 8.
Bahkan jika Anda dapat memastikan agar spasi tidak tercampur dengan tab Anda, Anda masih memiliki masalah: tab juga bermain buruk dengan font dengan lebar variabel. Masalah ini muncul ketika (misalnya) Anda ingin menyelaraskan komentar tertinggal:
Saat mereka berdiri sekarang, mereka semua berbaris dengan sempurna. Dilihat dengan font lebar variabel, bagaimanapun, semuanya menjadi jelek. Dengan spasi, komentar mungkin (sering akan) sedikit tidak sejajar. Namun, dengan tab, misalignment sering menjadi sangat radikal:
Tiba-tiba perbedaan kecil dalam lebar antara 'i' dan 'm' atau 'x' dalam font-variabel lebar kami telah diperbesar ke penghentian seluruh tab.
Intinya adalah bahwa hampir semua perubahan dalam cara Anda melihat kode dengan tab, tidak peduli seberapa sepele, dapat dan biasanya akan menghasilkan kekacauan yang tidak dapat dibaca.
Untuk menjawab pertanyaan Anda yang lain: orang lain sudah menunjukkannya, tapi saya tidak bisa membayangkan siapa pun dalam editor pemrograman (atau banyak hal lainnya) benar-benar menggunakan spasi untuk memasukkan spasi, jadi pertanyaan Anda tentang: "mengetik spacespacespacespace" adalah tidak relevan karena tidak ada yang melakukan itu. Demikian juga dengan spasi-belakang: sulit membayangkan seorang editor yang perlu menekan BkSpcempat kali untuk pergi ke penghentian tab sebelumnya, jadi (sekali lagi) pertanyaannya tidak relevan.
Intinya: tab baik-baik saja jika Anda (dan hanya Anda) akan pernah melihat kode Anda, dan Anda hanya pernah melakukannya dengan satu editor yang Anda tidak pernah mengkonfigurasi ulang (sama sekali!) Kondisi tersebut, bagaimanapun, sangat dekat dengan mustahil untuk menegakkan bahwa hanya ada satu jawaban yang masuk akal: tidak pernah menggunakan tab sama sekali.
sumber
Masalah besar adalah inkonsistensi dari lebar "tab" kadang-kadang mereka diterjemahkan sebagai empat spasi kadang delapan. Di banyak editor, Anda dapat mengaturnya dari 1 hingga 9 spasi.
Jadi ini mengubah editor WYSWYG sederhana menjadi Apa yang Anda Lihat adalah Apa yang MUNGKIN dapatkan oleh orang lain.
Ini masalah khusus untuk Python, tetapi juga masalah dalam bahasa "kurung keriting" mana lekukan digunakan untuk menyampaikan makna kepada pembaca manusia dan tab yang kacau membuat kode sulit dibaca.
sumber