Appunti del 30/03/2023⚓︎
Stile di programmazione⚓︎
K&R coding style⚓︎
Kernigan & Richie
Prevedevano 4/8 spazi per l'indentazione per evitare l'annidamento eccessivo. Troppo annidamento è in genere segnale di cattiva progettazione.
C | |
---|---|
Modularizzazione e strutturaione dei programmi dei files⚓︎
bisogna prima definire le interfacce tra i moduli.
ciò che succede nel modulo 1 non interessa al modulo 2. ciò che conta è sapere che riceverà quella struttura dati A organizzata in quel modo. questa è l'indipendenza.
la suddivisione in moduli va pensata ovviamente. bisogna quindi pensare quali saranno i moduli indipendenti da creare.
obv prima in pseudo e poi in C.
Programmazione in grande⚓︎
riguarda i programmi costituiti da più moduli, ovvero più files/librerie/altro. il file C non è un file singolo ma ce ne saranno di più. bisgona individuare la struttura migliore che permetta di mantenere la struttura che garantisca leggibilità, modificabilità e correttezza.
Progetto modulare⚓︎
è un insieme di moduli separati ma cooperanti tra loro secondo l'architettura del sistema sotfware.
modulo: interfaccia e implementazione.
interfaccia:
- le risorse esportate dal modulo
- è la parte pubblica, ovvero il "cosa". definisce cosa fa il modulo
- è il file header
.h
implementazione (o corpo)
- meccanismi che realizzano le funzioni
- parte "privata", ossia il "come"
- chi utilizza il modulo non deve sapere il come ma solo il cosa.
- è il file sorgente
.c
dunque modulo1.h
e modulo1.c
costituiscono un modulo. In modulo1
.h si
mettono tutte le intestazioni di tutte le funzioni o varaibili che si vuole
che vengano utilizzate. nel modulo1.c
si mette tutto, corpo e tutto il resto
che sia pubblico o privato.
ad esempio
Cosa contiene un header⚓︎
dichiarazioni dei metori da implementare, dette forward reference
variabili, dette variabili extern ossia var pubbliche definite in altri moduli.
costanti definite con la direttiva #define
Vantaggi della programmazione modulare⚓︎
team di programmatori possono lavorare sui programmi.
ogni file definisce un particolare tipo di oggetto come un tipo di dati e di operazioni su tale oggetto.
separare la dichiarazione del modulo dalla sua implementazione rende un programma ben strutturato e di facile manutenzione.
un file può mantenere tutte le funzioni/operazioni su matrici ed essere usato da un prog di biblioteca.
è buona pratica iniziare un file .h
con il seguente blocco per evitare
inclusioni multiple
example.h | |
---|---|
è un grave errore quello di scrivere codice in un file .h
e poi includerlo
nel file .c
.