JEdit’in, aşina olduğum programlama dilleriyle (özellikle HTML / XML ve C-benzeri diller) inanılmaz derecede iyi çalışan, elastik sekmelerin uygulanmasını denedim. Bununla birlikte, Python koduyla, nasıl işlendiği (sekmeler yerine işlerin nasıl hizalandığını göstermek için kullanılan alanlar):
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
Boşluğa dayanan Python gibi bir dil için, elastik tablaların sağladığı işlevleri devre dışı bırakmadıkça, bu bir fırsat kırıcıdır. Vim ve Emacs gibi editörler, seçeneğin adını ve nasıl devre dışı bırakılacağını biliyorsanız, çoğu işlev türünü devre dışı bırakmayı basitleştirir, ancak bu işlevin yukarıdaki gibi kodlar için devre dışı bırakılması gerekir.
Söylendiği gibi, x86 ASM, C, C ++, Go, XML, HTML ve beyaz boşluklara çok fazla güvenmeyen diğerleri için harika:
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.
}
Scheme gibi Lisp lehçelerinin, aynı zamanda elastik tablaları "çirkin" kod haline getirebilecek kendi kuralları olduğunu söyleyeceğim. Sekme ayarlarımı 2 sütunun kurallarına uyacak şekilde değiştirirsem ve olağandışı yerlere (bir işlev ile bağımsız değişkenler arasına) sekmeler ekleyebilirsem:
(let loop ((n 1))
(if (> n 10)
'()
(cons n
(loop (+ n 1)))))
vs daha okunabilir:
(let loop ((n 1))
(if (> n 10)
'()
(cons n
(loop (+ n 1)))))
Verilen, bu Python örneği kadar kötü değil, ancak kesinlikle kodun okunabilirliğini azaltır. C # veya C ++ gibi bir şeyde kodlama yaparken işlevsellikten çok zevk alırken, boşlukların işlevsel ve / veya görsel olarak yararlı olduğu Python veya Scheme gibi bir dilde kodlama yaparken işlevsellikten nefret ediyorum. Elastik sekmeler, ayrı bir girinti yardımcı programı gerektirmeden yardımcı olmak için özel olarak oluşturulmuştur, ancak açıkça tüm programlama dilleri için değildir.