| MODULE | TYPE | PRIVATE | INTERFACE | array assumed shape | INTENT | OPTIONAL | ALLOCATABLE POINTER | |
| Consentire il dimensionamento delle strutture dati a runtime | X | |||||||
| Prevedere il massimo controllo (possibilmente al momento della compilazione) sui potenziali errori del chiamante | X | X | X | X | X | |||
| Ridurre al minimo il numero di dichiarazioni che il chiamante deve fare | X | X | ||||||
| Permettere più istanze indipendenti di chiamate alle routine della libreria | X | |||||||
| Fornire nomi intuitivi alle subroutine | X | |||||||
| Ridurre il più possibile il numero di parametri da fornire alle subroutine | X | X | X | |||||
| Riservarsi la possibilità di cambiare il funzionamento interno della libreria, eventualmente estendendone le funzionalità senza dover cambiare le modalità di chiamata (API) | X | X | X | |||||
| Riutilizzare il più possibile il codice della libreria evitando duplicazioni che potrebbero portare a parti di codice non allineate fra loro | X | X | X | |||||
| Permettere uno sviluppo contemporaneo e il più possibile indipendente di diverse parti della libreria da parte di diversi programmatori | X | X | X | X |
La maggior parte di questi principî si inquadra in maniera naturale nello stile di programmazione ad oggetti.