Ho un forte background Java / Groovy e sono stato assegnato a un team che mantiene una base di codice C abbastanza grande per un software amministrativo.
Alcuni punti critici, come la gestione dei BLOB nel database o la generazione di 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:
- è dettagliato (specialmente quando si tratta di "eccezione")
- ci sono molti metodi enormi (molti metodi con oltre 2000 linee)
- non ci sono strutture dati avanzate (mi mancano molto List, Set e Map)
- nessuna separazione delle preoccupazioni (SQL è mescolato con gioia in tutto il codice)
Di conseguenza, ritengo che il business sia nascosto in tonnellate di codice tecnico e il mio cervello, modellato con Object Oriented e un pizzico di programmazione funzionale, non è a mio 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 oltre 10000 utenti con una sola macchina usando meno memoria di quanto java abbia bisogno per sputare "ciao mondo".
Voglio imparare a scrivere il codice C di conseguenza secondo i principi moderni comunemente accettati. Esistono principi comunemente accettati su come la C moderna dovrebbe essere scritta e strutturata?
Qualcosa di simile all'equivalente del libro "Effective Java", ma per C.
Modifica alla luce di risposte e commenti:
- Proverò ad adattare la mia mentalità al codice C e non tenterò di rispecchiarlo su OOP.
- Ho iniziato a leggere e leggere le guide dello stile di codifica consigliate dal commento (The GNU Coding Standards e The Linux Kernel Coding Style).
- Proverò quindi a proporre questo stile di codice ai miei colleghi. La parte più difficile potrebbe essere quella di convincere i colleghi che un metodo enorme potrebbe essere suddiviso in parti più piccole e che ripetere le stesse 4 righe del codice di gestione degli errori potrebbe essere evitato con l'aiuto di un metodo.