Ich habe gerade die Implementierung elastischer Tabstops in jEdit ausprobiert, die mit den mir vertrauten Programmiersprachen (hauptsächlich HTML / XML und C-ähnliche Sprachen) erstaunlich gut funktioniert. Mit Python-Code wird jedoch wie folgt gerendert (Leerzeichen anstelle von Tabulatoren, um die Ausrichtung zu veranschaulichen):
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
Für eine Sprache wie Python, die auf Abstand basiert, ist dies ein Deal-Breaker, es sei denn, Sie deaktivieren die von elastischen Tabstops bereitgestellten Funktionen. Editoren wie Vim und Emacs vereinfachen das Deaktivieren der meisten Arten von Funktionen, wenn Sie den Namen der Option kennen und wissen, wie sie deaktiviert werden können. Diese Funktionalität muss jedoch für Code wie den oben genannten deaktiviert werden.
Das heißt, es ist großartig für x86 ASM, C, C ++, Go, XML, HTML und andere, die nicht so sehr auf Leerzeichen setzen:
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.
}
Ich werde sagen, dass Lisp-Dialekte wie Scheme ihre eigenen Konventionen haben, mit denen elastische Tabstops auch "hässlichen" Code rendern. Wenn ich meine Tabulatoreinstellungen an die Konvention von 2 Spalten anpasse und Tabulatoren an ungewöhnlichen Stellen einfüge (zwischen einer Funktion und ihren Argumenten):
(let loop ((n 1))
(if (> n 10)
'()
(cons n
(loop (+ n 1)))))
desto besser lesbar:
(let loop ((n 1))
(if (> n 10)
'()
(cons n
(loop (+ n 1)))))
Zugegeben, dieses ist nicht so schlecht wie das Python-Beispiel, aber es verringert definitiv die Lesbarkeit des Codes. Während ich die Funktionalität beim Codieren in etwas wie C # oder C ++ sehr genieße, verabscheue ich die Funktionalität beim Codieren in einer Sprache wie Python oder Scheme, in der Whitespace funktionell und / oder visuell hilfreich ist. Elastische Tabstops wurden speziell erstellt, um ohne ein separates Einrückungsprogramm hilfreich zu sein, aber es ist eindeutig nicht für alle Programmiersprachen gedacht.