[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