Saya baru saja mencoba implementasi elastis tabstop jEdit, yang bekerja sangat baik dengan bahasa pemrograman yang saya kenal (terutama bahasa HTML / XML dan bahasa mirip-C). Namun, dengan kode Python, inilah yang ditampilkan (spasi digunakan sebagai pengganti tab untuk mengilustrasikan bagaimana berbagai hal menyelaraskan):
def foo(x):
'''<1 tab before the docstring.
No tab <tab
No tab <tab
<tab <another tab
<tab <another tab
<tab'''
if 1 or 2: #<Tab before this comment
yield True
Untuk bahasa seperti Python yang bergantung pada spasi, ini adalah pemecah kesepakatan kecuali Anda menonaktifkan fungsi yang disediakan oleh tabstop elastis. Editor seperti Vim dan Emacs membuat penonaktifan sebagian besar fungsi menjadi sederhana jika Anda tahu nama opsi dan cara menonaktifkannya, tetapi fungsi ini harus dinonaktifkan untuk kode seperti di atas.
Yang sedang berkata, itu bagus untuk x86 ASM, C, C ++, Go, XML, HTML, dan lainnya yang tidak terlalu bergantung pada spasi putih:
import (
"fmt" // We love formatting functions.
"io" // Because I/O is useful.
"os" // Can't open a file without os.Open!
)
type Foo struct {
Field1 int // This is properly aligned
ReallyLongField2 string // with this.
privateField io.Reader // Elastic tabstops are great for Go.
}
Saya akan mengatakan bahwa dialek Lisp seperti Skema memiliki konvensi mereka sendiri yang juga akan membuat tabstop elastis membuat kode "jelek". Jika saya mengubah pengaturan tabstop untuk mencocokkan konvensi 2 kolom dan menyisipkan tabstop di tempat yang tidak biasa (antara fungsi dan argumennya):
(let loop ((n 1))
(if (> n 10)
'()
(cons n
(loop (+ n 1)))))
vs. yang lebih mudah dibaca:
(let loop ((n 1))
(if (> n 10)
'()
(cons n
(loop (+ n 1)))))
Memang, yang ini tidak seburuk contoh Python, tetapi jelas mengurangi keterbacaan kode. Sementara saya sangat menikmati fungsionalitas ketika coding dalam sesuatu seperti C # atau C ++, saya benci fungsionalitas ketika coding dalam bahasa seperti Python atau Skema di mana spasi putih berfungsi dan / atau bermanfaat secara visual. Tabstop elastis dibuat secara khusus untuk membantu tanpa memerlukan utilitas indentasi yang terpisah, tetapi jelas itu tidak dimaksudkan untuk semua bahasa pemrograman.