Ho un strong background Java / Groovy e sono stato assegnato a un team che mantiene una base di codice C piuttosto ampia per un software amministrativo.
Alcuni punti critici, come trattare il BLOB nel database o generare report in PDF ed Excel sono stati esternalizzati al servizio web java.
Tuttavia, come sviluppatore Java, sono un po 'confuso da alcuni aspetti del codice:
- è prolisso (specialmente quando si tratta di 'eccezione')
- ci sono molti metodi enormi (molti metodi con oltre 2000 righe)
- non ci sono strutture dati avanzate (mi manca Lista, Set e Mappa molto)
- nessuna separazione di interesse (SQL è mescolato con gioia tutto intorno al codice)
Come risultato, sento che il business è nascosto in tonnellate di codice tecnico e il mio cervello, modellato con Object Oriented e un pizzico di programmazione funzionale, non è a suo agio.
Il lato positivo del progetto è che il codice è diretto: non esiste un framework, nessuna manipolazione del codice byte in fase di esecuzione, nessun AOP. E il server può rispondere simultaneamente a più di 10000 utenti con una sola macchina, utilizzando meno memoria di quella che ha bisogno di java per sputare "Ciao mondo".
Voglio imparare come scrivere il codice C in base ai principi moderni comunemente accettati. Esistono principi comunemente accettati su come la C moderna deve essere scritta e strutturata?
Qualcosa di simile all'equivalente del libro 'Effective Java', ma per C.
Modifica alla luce di risposte e commenti:
- Cercherò di adattare la mia mentalità al codice C e non provare a specularla su OOP.
- Ho iniziato a leggere le guide di stile di codifica consigliate dal commento (GNU Coding Standards e Linux Kernel Coding Style).
- Quindi proverò a proporre questo stile di codice ai miei colleghi. La parte più difficile potrebbe essere quella di convincere i colleghi che un enorme metodo potrebbe essere suddiviso in parti più piccole e che per ripetere le stesse 4 righe del codice di gestione degli errori potrebbe essere evitato con l'aiuto di un metodo.