[Allegro] update.job + optsget.inc überarbeitet
Bernhard Eversberg
ev at biblio.tu-bs.de
Do Jan 12 09:53:07 CET 2012
Neue Variante des update.job
Thomas Bergers update.job + getopts.jnc war die Grundlage für eine
überarbeitete Variante:
update.job : Emulation der Funktionen des 16bit-update.exe mit acon
optsget.inc : Hilfsroutinen zum Auswerten der Aufrufoptionen
(soll moegl. universell f. diesen Zweck einsetzbar sein)
wodurch unser bisheriger update.job ersetzt werden soll.
Aufruf: acon -jupdate -f... statt update -f...
Mehr dazu in Kürze!
Noch nicht berücks. Optionen: I,R,m,y,z
(Unseres wissens wurden diese kaum je benutzt)
ABER:
Erforderlich ist die neue Version 32.0 von acon, die ein paar
kleinere Verbesserungen bietet in den Lock- und if-Funktionen.
Diese braucht update.job.
Die Bearbeitung ist recht gründlich ausgefallen, wobei einige
Überlegungen Berücksichtigung fanden:
1. Ausführliche, konsistente Kommentare
2. Meidung von Synonymen und Metaphern, wo es zu Verwirrung
führen könnte bei Lesern, die in der Materie nicht so tief
drinstecken und deshalb die Synonymie evtl. nicht durchschauen
3. Benennungen teilweise zwecks mehr Plausibilität, besserer
Merkbarkeit u.a. geändert oder gestrafft:
z.B. --asif statt --dry-run
4. Etwas mehr Kürze und Prägnanz der Benennungen von Variablen und
Sprungmarken, auch eine gewisse Einheitlichkeit: z.B. Suffixe
...End und ...OK bei denjenigen Sprungzielen, die das Ende eines
Unterprogramms oder den gelungenen Abschluß einer Unterfunktion
markieren, ...Err für einen Fehleraussprung.
Ferner wurde meist der nominale Teil der Benennung (das Substantiv)
an den Anfang gesetzt, Verb oder Adjektiv dahinter. Also z.B.
optsget.inc und nicht getopts.inc
Dies alles ist aber noch nicht durchgängig und konsequent.
5. Benennungen folgen manchmal dem gebräuchlichen Stil, mit
Kleinbuchstabe zu beginnen und Binnenmajuskeln für den Beginn
eines Wortes zu verwenden: z.B. updPut statt updput
(Insider nennen das wohl "camelCase", vermutlich hat das ein
Raucher der betr. Zigaretten erfunden.)
Auch das könnte noch konsequenter werden.
6. Redundanzminderung. Darunter fällt vor allem die Abschaffung des
zusätzlichen, zum Funktionieren nichts beitragenden Arrays $OPTS.*,
der ja nur die Optionen dupliziert, z.B. $OPTS.InputFileNr
für $OP_n (= Inhalt der Option -n). (Man mag hier sagen, daß eine
"sprechende" Variable immer besser sei. Ja, aber in diesen Fällen
ist es doch so: Wer damit arbeitet, der muß die Optionen als solche
kennen, der muß wissen, daß es -n gibt und was es bedeutet. Und dann
ist $OP_n nicht weniger "sprechend" als $OPTS.InputFileNr.)
Es mag ja sein, daß dabei die eine oder andere ungeschriebene
Konvention unbeachtet bleibt, die der routinierte Programmierer oder
Admin für selbstverständlich hält, aber wir müssen an den Kreis der
Interessenten denken und an die Verständlichkeit der Dinge. Außerdem
muß auch diese Variante nicht die letzte bleiben, wenn sich harsche
und berechtigte Kritik regt.
Hinsichtlich des Locking ist die von Berger monierte "völlig vergurkte"
Variante noch drin. Seine eigene war nicht besser, nebenbei gesagt,
und konnte es auch nicht sein aufgrund noch bestehender interner
kleinerer Probleme, die wir nun ausgeräumt zu haben hoffen. Sobald
Berger in dem Punkt ein besseres Codestück liefert, bauen wir das ein;
sobald er nachvollziehbare Probleme vorlegt, können wir sie lösen.
Das Dilemma ist, daß unsere Tests alle fehlerlos verliefen, aber ein
großer Mehrplatzeinsatz läßt sich eben testweise kaum umfassend simulieren.
Hier sind die Dateien:
https://svn.allegro-c.de/svn/download/prog/update.job
https://svn.allegro-c.de/svn/download/prog/optsget.inc
B.Eversberg
Mehr Informationen über die Mailingliste Allegro