Modularisierung

Jedes umfangreichere Programm wird normalerweise in mehrere Dateien (“Module”) aufgeteilt. In einem Modul werden zusammengehörige Datenstrukturen und Funktionen zu einer logischen Einheit kombiniert.

Jedes Modul besitzt eine Schnittstelle mit “globalen” Variablen und Funktionen und Variablen des Moduls, auf die auch von einer anderen Datei aus zugegriffen werden kann. Die anderen Funktionen und Variablen sind “lokal”, sie haben also keine direkten Auswirkungen auf andere Module.

Jedes Modul sollte möglichst wenig Funktionen oder Variablen in seiner Schnittstelle definieren, damit Änderungen an lokalen Funktionen keine Änderungen in anderen Code-Teilen zur Folge haben. Beispielsweise betrifft die Änderung einer globalen Funktionen bezüglich ihres Namens oder ihrer Anzahl an Argumenten alle Code-Teile, in denen die Funktion benutzt wird.

Die Schnittstelle eines Moduls (einer .c-Datei) wird üblicherweise in einer gleichnamigen Headerdatei (einer .h-Datei) definiert. In einer solchen Datei werden Variablen und Funktionen lediglich deklariert, eine Header-Datei enthält somit keinen ausführbaren Code.

Die Verwendung von Header-Dateien ist dann sinnvoll, wenn eine Variable oder eine Funktion von mehreren Dateien aus benutzt werden soll.