Apakah programmer Python menemukan masalah ruang putih tidak nyaman? [Tutup]


11

Banyak programmer, setelah pertama kali bertemu Python, segera ditunda oleh pentingnya spasi putih. Saya telah mendengar berbagai alasan bahwa ini tidak nyaman, tetapi saya belum pernah mendengar keluhan dari seorang programmer Python.

Tentu saja, saya belum bertemu banyak programmer Python, karena saya telah menghabiskan karir saya di dunia Java.

Jadi pertanyaan saya adalah bagi Anda yang telah berpartisipasi dalam proyek Python besar (lebih dari 3 bulan, dengan Python menjadi bahasa utama yang digunakan): Apakah Anda menemukan masalah spasi putih tidak nyaman dan terus-menerus mengganggu? Atau apakah itu bukan masalah setelah Anda ikut arus?

Saya tidak mengajukan pertanyaan karena saya mendukung atau menentang Python, atau untuk atau menentang penggunaan spasi putih. Saya kebetulan suka Python, tapi saya tidak pernah menggunakannya untuk hal besar.

Tolong jangan berikan spekulasi jika Anda tidak berpengalaman dengan Python.


2
Apakah mereka akan menggunakan bahasa itu jika melakukannya? Saya tidak akan. Persyaratan sintaks yang mengganggu / mengganggu adalah salah satu hal yang mungkin membuat saya memilih bahasa yang berbeda untuk suatu proyek (dengan asumsi, tentu saja, saya dapat memilih).

sejak kapan spasi putih menjadi masalah? :-)
Kugel

22
Kami merasa tidak nyaman karena semua orang terus membicarakannya. Kami tidak pernah memikirkannya.
Winston Ewert

Masalah ruang putih tidak berbeda dengan tahun lalu - OCCAM2 memiliki ruang putih yang signifikan. Itu bukan masalah besar.
cepat,

4
Satu-satunya waktu saya merasa menjengkelkan adalah ketika kode copy-paste dari online yang ditulis menggunakan spasi alih-alih tab (atau sebaliknya), menyebabkan kesalahan sintaks yang benar-benar tidak terlihat
Cameron

Jawaban:


14

Hanya ada satu kasus di mana saya menemukan ruang kosong menjadi menjengkelkan, dan saat itulah memodifikasi kode yang ada sehingga blok kode harus menjadi lebih atau kurang menjorok dari sebelumnya (misalnya, menambah atau menghapus if:sebelum kode). Saat menulis dalam bahasa seperti C, Anda cukup menambahkan ifdan sepasang kurung kurawal, dan (dalam Emacs, atau saya bayangkan ada editor yang bagus) tekan Tab untuk membiarkan editor secara otomatis memperbaiki lekukan. Dengan Python, Anda harus melakukannya sendiri. Tentu saja, ada jalan pintas editor untuk melakukannya sendiri, jadi itu tidak terlalu buruk, tetapi hilangnya redundansi tidak membebankan sedikit tambahan pada programmer.

Secara keseluruhan, ini adalah kemenangan, jika hanya untuk mencegah separuh layar saya tidak terisi dengan garis-garis seperti berikut:

         }
      }
   }
}

1
Di editor wajar apa pun yang berbicara Python, ada cara yang sangat mudah untuk memblokir kode. Di Wing IDE, saya cukup pilih blok dan tekan Tab (atau Shift-Tab untuk mengurangi level indent).
Adam Crossland

1
Ya, di Emacs saya pilih blok dan hit C-c >atau C-c <. Anda masih harus melakukannya sendiri. Dengan kata lain, karena spasi dan logika kode tidak mubazir, Anda tidak bisa hanya memilih blok raksasa dan memanggil M-x indent-region(atau apa pun versi editor Anda) untuk membuat indentasi semuanya "dengan benar".
dfan

6
@Adam, editor yang baik memudahkan Anda mengubah level indentasi Anda. Tetapi dalam bahasa kawat gigi, Anda dapat menempelkan kode baru, dan menekan tombol favorit Anda untuk meng-reindent file. Tada! Lekukan benar. Dalam python, Anda harus menempel, memilih, indent / dedent. Tidak banyak tapi ada kemenangan kecil di sini untuk kawat gigi.
Winston Ewert

@ Winston - harus menjadi editor Anda. Jika kode yang Anda tempel dengan sendirinya indentet dengan benar, maka jika keluar beberapa tingkat terlalu jauh ke kanan / kiri itu hanya masalah mengetik (SHIFT +) Tab untuk menyelaraskan sesuai - tidak ada perbedaan nyata untuk menekan tombol untuk reindent file tersebut. Selain itu - Anda tidak boleh menyalin / menempelkan kode :)
Ingo

1
@ Winston: bahkan blok notepad ++ indent ketika menggunakan Tab dan Shift-Tab, saya belum menemukan jalan pintas vim, tapi saya kira saya tidak cukup menggunakannya: p
Matthieu M.

50

Saya suka ruang putih signifikan Python. Bagi saya itu adalah contoh sempurna KERING di tingkat sintaksis. Cara yang dapat dibaca manusia untuk menunjukkan di mana blok kode dimulai dan diakhiri dengan indentasi. Jika Anda ingin kode Anda dapat dibaca, Anda harus indentasi apa pun bahasanya. Konyol membuat programmer menentukan informasi ini dua kali, satu kali untuk kompiler / juru bahasa dan satu kali untuk manusia. Lebih jauh, lekukan dalam bahasa mirip-C mirip dengan komentar: Ini dimaksudkan untuk meningkatkan pemahaman tetapi maknanya tidak ditegakkan oleh kompiler / juru bahasa dan itu bisa keluar dari sinkronisasi dengan makna sebenarnya (di mana kawat gigi itu) sangat mudah, membingungkan daripada mengklarifikasi.


8
+1 untuk Don't Repeat Yourself. Praktik yang baik adalah membuat indentasi kode untuk mencerminkan struktur blok, jadi mengapa juga memiliki penanda awal / akhir?
Steve314

12

Ruang kosong yang signifikan sebenarnya nyaman bagi saya. Itu membuat saya mengetik lebih sedikit. Ini memformat kode dengan rapi dan agak tidak ambigu. Karena ini, itu membuat kode lebih mudah dibaca.

(Saya suka spasi putih yang signifikan di Haskell juga, untuk alasan yang sama.)


1
Saya akan berbagi pengalaman positif saya dengan ruang putih Haskell juga, tetapi FarmBoy bersikeras bahwa seseorang harus memiliki pengalaman 3 bulan dengan Python, yang lainnya adalah spekulasi. :-)
Ingo

1
Pengalaman saya dengan Python kami sejak tahun 1998, jadi jawaban saya mungkin memenuhi syarat :) (Sayang sekali pengalaman saya dengan Haskell jauh lebih pendek.)
9000

@ 9000 Meskipun Haskell datang sebelum Python! : D
pradyunsg

8

Ketika saya pertama kali menggunakan python, hal spasi putih itu baru dan karenanya pembatasan yang menjengkelkan.

Sekarang saya bahkan tidak menyadarinya. Saya telah menggunakan python selama 11 bulan.


5

Pertama - bahasa roti dan mentega saya adalah Python, SQL, dan Java. Saya suka spasi putih Python - kurang sintaksis dan pengetikan, dan memaksa orang untuk menulis kode yang dapat dibaca dan diformat dengan rapi. OTOH, saya benci verbositas Jawa - sangat banyak sehingga saya benar-benar menggunakan Python untuk menghasilkan semua pelat boiler yang harus saya tulis di Jawa, yang mengesankan semua rekan kerja Java saya yang kagum dengan produktivitas saya.

Satu peringatan besar adalah ketika menyalin / menempel kode dari web - sering menyebabkan spasi dan tab campuran yang membutuhkan langkah ekstra untuk membersihkan, dan saya biasanya hanya menangkap setelah pengecualian runtime.


Memberitahu editor Anda untuk sintaks sorot tab sebagai kesalahan dapat banyak membantu - untuk vim saya gunakan highlight link RedundantSpaces Error | au BufEnter,BufRead * match RedundantSpaces "\t" | au BufEnter,BufRead * match RedundantSpaces "[[:space:]]\+$"di vimrc saya
Daenyth

4

Jika seorang programmer terganggu oleh pentingnya white-space ia mungkin tidak akan menjadi programmer python.


1
Saya telah mendengar beberapa orang mengabarkan Python yang mengatakan bahwa mereka memiliki masalah dengan The Whitespace Thing (tm) tetapi kemudian menyukainya setelah beberapa saat. Dari pengamatan saya, sepertinya semakin banyak orang bergabung dalam diskusi tentang topik ini, kemungkinan salah satu dari mereka menceritakan kisah seperti itu mendekati satu. (Sunting: Segera dibuktikan dengan jawaban kedua ...)

@nannan, saya bisa berlangganan ini.
Ingo

3

Saya yakin Anda akan menemukan banyak tumpang tindih antara orang-orang yang memiliki masalah dengan ruang kosong yang signifikan dan mereka yang tidak memiliki pengalaman dengan editor teks programmer yang baik, seperti Emacs, yang menangani sebagian besar lekukan tanpa keterlibatan mereka.

Bagaimanapun, setelah Anda menginternalisasi Python, itu bukan masalah lagi; pada kenyataannya, keringkasan dan ruang kecil yang diperlukan di layar menjadi keuntungan besar untuk dibaca. Karena saya telah menggunakan terutama Python, saya menemukan bahasa di mana ada lebih banyak redundansi (misalnya Java dan C #) sulit untuk mendisiplinkan diri untuk menulis. Menempatkan kawat gigi di sekitar kode yang lekukan sudah membuat strukturnya jelas di saraf saya.


3

Untuk pengkodean aktual, ini sama sekali tidak merepotkan, tetapi sebenarnya bermanfaat (lihat jawaban dsimcha).

Ini bisa menjengkelkan ketika berhadapan dengan teknologi komunikasi yang tidak menghormati spasi putih terkemuka (seperti banyak forum web berorientasi non-pemrograman dan juga ketika menyematkan kode Python ke dalam bahasa yang berbeda, seperti bahasa templating HTML), Meskipun saya melihat itu sebagai lebih banyak cacat pada alat yang menghilangkan spasi putih terkemuka daripada cacat pada Python, memang benar bahwa bahasa yang berlebihan yang mengekspresikan struktur kode dua kali lebih siap untuk menangani lingkungan yang merusak (karena Anda dapat menempelkan kode ke editor dan otomatis reindent berdasarkan pada marka struktural eksplisit, atau tidak peduli apakah kode tersebut hanya dieksekusi daripada dibaca oleh manusia).


2

Saya tidak menemukan ruang putih itu mengganggu. Saya menemukan indentasi yang kurang atau tidak konsisten sangat menjengkelkan dalam bahasa lain. Saya mengerti masalah ini adalah salah satu masalah yang ingin dipecahkan oleh gaya.

Python bukan salah satu bahasa utama saya.

Saya menemukan penanganan tab dan spasi di indentasi kadang-kadang mengganggu. Ini dapat menyebabkan masalah saat mengalihkan editor dari satu edit ke yang lain, atau ketika mengedit kode yang ditulis orang lain. Biasanya sepele untuk diselesaikan.


1
mencampur tab dan spasi dalam lekukan python adalah jalan terpendek ke neraka: p
Matthieu M.

@ Matter: Jelas, itu gangguan saya.
BillThor

1

Saya berasal dari latar belakang C # / Javascript / XBase tanpa urutan tertentu, dan dalam mencoba-coba saya dengan Python itu bukan pertimbangan sama sekali bagi saya. Ini seperti kawat gigi dalam bahasa lain - begitulah cara kerjanya, memasukkan hal-hal seperti yang dikatakan peraturan, dan mengeringkan mata Anda adalah sikap saya.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.