1. Hauptsächlich Debugging-Gründe. Der Datenbrowser zeigt nur die lokalen Variablen freiwillig an. Dass man nach dem Testen main mit einem app.doScript aufrufen kann, ist nur ein Bonuspunkt. Es gibt noch Kapselungsgründe, die in einem InDesign Script i.d.R nicht so wichtig sind.
2. Das mit dem Unterstrich ist eine Konvention aus objektorientierten Sprachen, wo ein Objekt/eine Funktion einerseits Variablen hat, die von außen zugänglich sind und anderer seits Variablen, die nur der internen Verarbeitung dienen. Letztere schreiben viele mit vorgestelltem Unterstrich.
Die für Anfänger wichtigste Überlegung ist meines Erachtens eine Benennung, die den Scriptleser leicht zwischen InDesign-Wörtern und Variablennamen unterscheiden lassen. Das vorangestellte my erfüllt den Zweck. Ich habe eine zeitlang immer deutsche Begriffe genommen, bin inzwischen aber dazu übergegangen, statt camelCase den unter_strich zu verwenden.
Letzten Endes reine Stilfrage.
3. Globale Variablen stellen dir schnell ein Bein, sobald die Scripte komplexer werden. Aber auch das ist nicht objektiv beantwortbar. Ein normales Script wird gestartet, läuft und wird danach wieder aus dem Speicher gelöscht. Das erledigt eine Menge der Probleme, die in komplexen Systemen gegen globale Variablen sprechen.
Auch wieder was ich mache: Ich schachtel gerne Funktionen:
Das spart eine Menge Parameterübergaben, hält doc aber semi-lokal.
4. #include ist vor allem gut, wenn du Code-Teile in verschiedenen Scripten verwendest, also deine eigenen Bibliotheken baust.
Ansonsten jedenfalls auch, wenn das Script so komplex wird, dass du thematische Blöcke bilden kannst. Ab 500 Zeilen fängt ein Script an, unübersichtlich zu werden.
5. Gehupft wie geschlumpft. Kleinere Preferences schreibe ich i.d.R. als Label ins App oder Document. Das hat sehr geringen Verwaltungsoverhead.
Ansonsten ist es dein Geschmack, ob du txt, csv, xml, json oder sonstwas nimmst. Einzige Empfehlung: Leg dir einen Ordner in Folder.userData an.
6. Ich habe einen sehr umfangreichen Scripte-Ordner in der Dropbox und lege einen alias in den Script Panel Ordner der verschiedenen InDesign Versionen.
Wie man das ab CC macht, steht hier Wichtige Scripte kriegen entweder einen Menübefehl per Startup Script oder einen Shortcut. Meistens letzteres.
Als Versionierung bin ich dazu übergegangen, das Datum in Form von 151014 als Prefix zu nehmen. Neue Version, neues Datum.
7. Ich hab mal angefangen,
Quiver zu verwenden, bin aber nicht diszipliniert genug. Stattdessen gibt es einen Ordner mit Snippets, in dem mir die Volltextsuche vom Mac gute Dienste leistet.
8. k.A.
9. Ich mag hier das KISS-Prinzip.
Sprich: Es gibt eine globale Variable
und viele Zeilen im Code
Etwas eleganter wäre eine dbg() Funktion, die alternativ erlaubt, Meldungen z.B. in eine Datei zu schreiben oder einen zweiten Parameter für Gewichtung annimmt, wie du oben andeutest.
Fang klein an und schau, ob du mehr brauchst.
Sehr empfehlenswert ist meines Erachtens dieses Büchlein:
http://www.amazon.de/JavaScript-Parts-Working-Shallow-Grain/dp/0596517742
Gibts auch auf Deutsch.
Ziemlich hohes Niveau, aber die Auseinandersetzung lohnt sich.