Tengo una sólida experiencia en Java / Groovy y he sido asignado a un equipo que mantiene una base de código C bastante grande para un software administrativo.
Algunos puntos débiles, como tratar con blob en la base de datos o generar informes en PDF y Excel, se han externalizado al servicio web de Java.
Sin embargo, como desarrollador de Java, estoy un poco confundido por algunos aspectos del código:
- es detallado (especialmente cuando se trata de 'excepción')
- hay muchos métodos enormes (muchos métodos de más de 2000 líneas)
- no hay estructuras de datos avanzadas (extraño mucho List, Set and Map)
- sin separación de preocupaciones (SQL se mezcla alegremente en todo el código)
Como resultado, siento que el negocio está oculto en toneladas de código técnico y mi cerebro, conformado con objetos orientados y una pizca de programación funcional, no está a gusto.
El lado bueno del proyecto es que el código es sencillo: no hay marco, no hay manipulación de código de bytes en tiempo de ejecución, no hay AOP. Y el servidor puede responder simultáneamente a más de 10000 usuarios con una sola máquina utilizando menos memoria de la que Java necesita para escupir "hola mundo".
Quiero aprender a escribir código C de acuerdo con los principios modernos comúnmente aceptados. ¿Hay algún principio comúnmente aceptado sobre cómo se debe escribir y estructurar la C moderna?
Algo parecido al equivalente del libro 'Java efectivo', pero para C.
Edite a la luz de las respuestas y comentarios:
- Intentaré adaptar mi mentalidad al código C y no intentar reflejarlo en OOP.
- Comencé a leer y leer las guías de estilo de codificación recomendadas del comentario (The GNU Coding Standards y The Linux Kernel Coding Style).
- Luego trataré de proponer este estilo de código a mis compañeros de trabajo. La parte más difícil podría ser convencer a los compañeros de trabajo de que un método enorme podría dividirse en partes más pequeñas y que la ayuda de un método podría evitar las mismas 4 líneas de código de manejo de errores.