J'ai une solide expérience Java / Groovy et j'ai été affecté à une équipe qui maintient une base de code C assez importante pour un logiciel d'administration.
Certains problèmes, comme le traitement des blob dans la base de données ou la génération de rapports au format PDF et Excel, ont été externalisés vers le service Web Java.
Cependant, en tant que développeur Java, je suis un peu confus par certains aspects du code:
- il est verbeux (surtout lorsqu'il s'agit d'une «exception»)
- il y a beaucoup de méthodes énormes (beaucoup de méthodes 2000+ lignes)
- il n'y a pas de structures de données avancées (il me manque beaucoup List, Set et Map)
- aucune séparation des préoccupations (SQL est joyeusement mélangé tout autour du code)
En conséquence, je sens que l'entreprise est cachée dans des tonnes de code technique et mon cerveau, façonné avec Orienté Objet et une pincée de programmation fonctionnelle, n'est pas à l'aise.
Le bon côté du projet est que le code est simple: il n'y a pas de framework, pas de manipulation de code d'octet à l'exécution, pas d'AOP. Et le serveur peut répondre simultanément à plus de 10000 utilisateurs avec une seule machine en utilisant moins de mémoire que java a besoin pour cracher "hello world".
Je veux apprendre à écrire du code C conformément aux principes modernes généralement acceptés. Y a-t-il des principes communément acceptés sur la façon dont le C moderne devrait être écrit et structuré?
Quelque chose d'un peu comme l'équivalent du livre "Effective Java", mais pour C.
Modifier à la lumière des réponses et des commentaires:
- Je vais essayer d'adapter mon état d'esprit au code C et ne pas essayer de le refléter dans la POO.
- J'ai commencé à lire les guides de style de codage recommandés dans le commentaire (Les normes de codage GNU et Le style de codage du noyau Linux).
- Je vais ensuite essayer de proposer ce style de code à mes collègues. La partie la plus difficile pourrait être de convaincre des collègues qu'une méthode énorme pourrait être divisée en parties plus petites et que répéter les mêmes 4 lignes de code de gestion des erreurs pourrait être évité à l'aide d'une méthode.