Forum: PC-Programmierung Welche Informationen sind in den Kopfzeilen eines Listings sinnvoll?


von Guido C. (guidoanalog)


Lesenswert?

Hallo,

ich möcht gerne für meine Listings einheitliche Kopfzeilen verwenden. 
Könnt ihr mir einen Tipp geben was ich dort alles aufnehmen soll? Hat 
gegebenenfalls jemand eine Vorlage für mich?

Anbei findet Ihr meinen ersten Entwurf:

1
; **************************************************
2
; Hier Titel einfügen.
3
; **************************************************
4
; Ansprechpartner: max@mustermann.de
5
; Firma/Uni/Schule: MaxMu
6
; Version: 1.0 / Stand: 09.01.2012
7
; **************************************************
8
; Hier Programmbeschreibung einfügen.
9
; Beschreiben was Programm macht und welche Parameter
10
; beim Aufruf übergeben werden können bzw. müssen.
11
; **************************************************
12
; Zur Ausführung benötigte Dateien:
13
; MeineTolle.dll
14
; **************************************************
15
; Hier Quellcode einfügen

Mit freundlichen Grüßen
Guido

von Klaus W. (mfgkw)


Lesenswert?

1. Bei meinen Quelltexten, die ich in Eigenregie mache:

- Ganz oben habe ich eine Zeile, die vom Editor (EMACS) immer
  beim Abspeichern automatisch aktualisiert wird mit Datum,
  Uhrzeit, Benutzername.
1
// Time-stamp: "03.09.11 07:37 LCD44780.h klaus?wachtler.de"

- Mit besonderen Tags, die von der Versionsverwaltung
  automatisch mit der Revisionsnummer etc. aktualisiert werden,
  weiß ich welche ausgecheckte Version ich vor mir habe.
1
// $Id: LCD44780.h 658 2011-09-04 05:42:15Z klaus $
(Muß man z.B. bei svn mit Attributen aktivieren)

- Ich schreibe bei mir immer noch eine Historie mit rein,
  in der alle nennenswerten Änderungen kurz aufgeführt werden.
  Dann muß man nicht mühsam über die Versionsverwaltung
  herausfinden, was in etwa passiert ist.
1
// Aenderungen:
2
//
3
// 23.06.2009 kw    - von aussen nicht aufzurufende Funktionen static
4
//                    gemacht:
5
//                    lcd_data(), lcd_command(), lcd_enable()
6
//                  - gemeinsamen Code aus lcd_command() und lcd_data()
7
//                    in neue Funktion lcd_byte() ausgelagert
8
//                  - Shiften und Maskieren in lcd_byte() eliminiert
9
//                  - in lcd_set_cursor() Adressberechnung korrigiert
10
//                    fuer blaues LCD "Blue Line" von Electronic Assembly
11
//                    EA W204B-NLW bzw. Reichelt LCD204BBL
12
//
13
// 02.08.2009 kw    - auf C++ umgestellt
14
//                  - Ports und Pinnummern beim Initialisieren
15
//                    anzugeben (anstatt fest verdrahtet)
16
//                  - mehrere LCDs nutzbar (nur Enable muss auf
17
// ...

- Meistens schreibe ich noch eine Art Literaturverzeichnis mit
  rein, um in Kommentaren auf [1] oder [2] etc. Bezug nehmen zu
  können:
1
// [1] http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#LCD-Ansteuerung
2
//
3
// [2] http://www.mikrocontroller.net/topic/88543#751982
4
//
5
// [3] "DOTMATRIXDISPLAYS 4x40" von
6
//     Electronic Assembly GmbH
7
//     Lochhamer Schlag 17
8
//     D-82166 Gräfelfing
9
//     http://www.lcd-module.de
10
...

---

2. Bei den meisten Firmen, mit denen ich zu tun habe:

Nichts.

---

Häufig sieht man dann noch Angaben zu Copyright, ggf. Lizenz
(GNU etc.), so etwas brauche ich aber i.d.R. nicht.

von Rolf M. (rmagnus)


Lesenswert?

Guido C. schrieb:
> ; **************************************************
> ; Hier Titel einfügen.

Was meinst du mit "Titel"? Den Dateinamen?

> ; **************************************************
> ; Ansprechpartner: max@mustermann.de
> ; Firma/Uni/Schule: MaxMu
> ; Version: 1.0 / Stand: 09.01.2012
> ; **************************************************
> ; Hier Programmbeschreibung einfügen.
> ; Beschreiben was Programm macht und welche Parameter
> ; beim Aufruf übergeben werden können bzw. müssen.

Das würde ich höchstens dann mit reinschreiben, wenn das Programm aus 
genau einer Quellcode-Datei besteht. Generell gehört es eher in eine 
separate README-Datei. Da würde ich hier eher hinschreiben, welcher Teil 
der Funktionalität in dieser Datei implementiert ist und ggf. grob, wie 
es funktioniert.

> ; **************************************************
> ; Zur Ausführung benötigte Dateien:
> ; MeineTolle.dll
> ; **************************************************

Siehe Programmbeschreibung

> ; Hier Quellcode einfügen



Klaus Wachtler schrieb:
> - Mit besonderen Tags, die von der Versionsverwaltung
>   automatisch mit der Revisionsnummer etc. aktualisiert werden,
>   weiß ich welche ausgecheckte Version ich vor mir habe.// $Id: LCD44780.h 658 
2011-09-04 05:42:15Z klaus $

Ich hab das früher auch gemacht, bin aber davon abgekommen, weil es bei 
Diffs zwischen verschiedenen Revisionen eines Verzeichnisses jede Menge 
Unterschiede anzeigt, die eigentlich gar nicht da sind, weil diese Zeile 
das einzige ist, was sich unterscheidet. Man kann dem Diff zwar sagen, 
daß es solche Zeilen ignorieren soll, aber im Großen und Ganzen finde 
ich das für den Nutzen zu umständlich. Mit einem einfachen "svn info" 
bekomme ich die Informationen genauso.

Übrigens: "Tag" hat bei Revisionsverwaltung schon eine andere Bedeutung. 
Die Dinger heißen "Keywords".

> (Muß man z.B. bei svn mit Attributen aktivieren)

Werden die nicht standardmäßig für Textdateien automatisch gesetzt?

> - Ich schreibe bei mir immer noch eine Historie mit rein,
>   in der alle nennenswerten Änderungen kurz aufgeführt werden.
>   Dann muß man nicht mühsam über die Versionsverwaltung
>   herausfinden, was in etwa passiert ist.

Bei CVS gab's dafür das Keyword $Log$, dass bei SVN aus folgendem Grund 
nicht mehr verfügbar ist:
http://subversion.apache.org/faq.html#log-in-source

> Häufig sieht man dann noch Angaben zu Copyright, ggf. Lizenz
> (GNU etc.), so etwas brauche ich aber i.d.R. nicht.

Wenn du deinen Code veröffentlichen willst, bietet es sich an. Bei 
einigen Lizenzen gibt's ja schon einen vorgefertigten Standardtext 
dafür.

von Klaus W. (mfgkw)


Lesenswert?

Rolf Magnus schrieb:
> Das würde ich höchstens dann mit reinschreiben, wenn das Programm aus
> genau einer Quellcode-Datei besteht.

... oder in sich halbwegs abgeschlossen ist, was eigentlich der 
Normalfall sein sollte.

Wenn ich eine z.B. eine Templateklasse habe für eine Hashtabelle habe, 
ist das sicher nicht das ganze Programm, aber es ist für genau seine 
Anforderung vollständig.
Dann würde ich auch im Header kurz beschreiben, was es macht.

Wenn es nur ein allein unbrauchbarer Teil ist, der deshalb nicht hier 
beschrieben wird, dann gehört m.E. aber zumindest ein Verweis auf die 
richtige Doku hin.

---

Aber alle solche Dinge sind großteils Geschmackssache bzw. von den 
Umständen abhängig.

von Guido C. (guidoanalog)


Lesenswert?

Hallo,

vielen Dank für die Rückmeldung.

Klaus Wachtler schrieb:
> - Ich schreibe bei mir immer noch eine Historie mit rein,

Klaus Wachtler schrieb:
> - Meistens schreibe ich noch eine Art Literaturverzeichnis mit
>   rein

Der Vorschlag mit der (Änderungs)Historie finde ich sehr gut. Diesen 
werde ich auf jeden Fall aufgreifen. Beim Literaturverzeichnis bin ich 
noch etwas unschlüssig.

Rolf Magnus schrieb:
> Was meinst du mit "Titel"? Den Dateinamen?

Ich dachte hier eher an eine kurze Beschreibung. So in der Art 
"Ansteuerprogramm zum Vermessen einer LED" oder "Auswertung der 
Messwerte des thermischen Einschwingvorgangs". Sollte der Dateiname auch 
in die Kopfzeilen?

Rolf Magnus schrieb:
>> ; **************************************************
>> ; Ansprechpartner: max@mustermann.de
>> ; Firma/Uni/Schule: MaxMu
>> ; Version: 1.0 / Stand: 09.01.2012
>> ; **************************************************
>> ; Hier Programmbeschreibung einfügen.
>> ; Beschreiben was Programm macht und welche Parameter
>> ; beim Aufruf übergeben werden können bzw. müssen.
>
> Das würde ich höchstens dann mit reinschreiben, wenn das Programm aus
> genau einer Quellcode-Datei besteht. Generell gehört es eher in eine
> separate README-Datei. Da würde ich hier eher hinschreiben, welcher Teil
> der Funktionalität in dieser Datei implementiert ist und ggf. grob, wie
> es funktioniert.

Im aktuellen Fall möchte ich die Kopfzeilen für meine Matlab-Programme 
bzw. Matlab-Skripte verwenden. In der Regel handelt es sich hierbei um 
Programme zur Ansteuerung von Messaufbauten oder zur Auswertung von 
Messwerten. Bisher bestehen die Programme nur aus einer (Programm-) 
Datei. Es wäre natürlich nicht schlecht die Kopfzeilen auch bei anderen 
Projekten bzw. Programmiersprachen einsetzen zu können. Ich muss "das 
Rad ja nicht immer neu erfinden".

Mein Hintergedanke ist folgender. Gelegentlich kommt es vor, dass man 
den einen oder anderen Quellcode an Bekannte weiter gibt. Dieser gibt 
den Quellcode dann an seinen Bekannten weiter, usw. Nun ist es natürlich 
müßig, wenn jeder neue Anwender sich erst durch das Listing "quälen" 
muss um zu verstehen was das Programm macht. Eine gute Beschreibung am 
Anfang des Listings vereinfacht den Einsatz des Quellcode doch 
erheblich. Natürlich ist dies auch für mich sinnvoll, wenn ich ein 
Listing nach 3 Jahre noch einmal verwenden möchte.

Rolf Magnus schrieb:
>> Häufig sieht man dann noch Angaben zu Copyright, ggf. Lizenz
>> (GNU etc.), so etwas brauche ich aber i.d.R. nicht.
>
> Wenn du deinen Code veröffentlichen willst, bietet es sich an. Bei
> einigen Lizenzen gibt's ja schon einen vorgefertigten Standardtext
> dafür.

In Richtung GNU, etc. habe ich bisher noch gar nicht gedacht. Meine 
Listings sind bisher alle noch (c) by Guido. Allerdings nur aus dem 
Grund, damit sich niemand mit meinen Federn schmückt. Dies habe ich 
leider auch schon erlebt.

Mit freundlichen Grüßen
Guido

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.