Ahora que tengo mi cabeza alrededor del lenguaje 'C' hasta el punto en que me siento lo suficientemente competente como para escribir código limpio, me gustaría centrar mi atención en las pautas de arquitectura del proyecto. Estoy buscando un buen recurso que abarque los siguientes temas:Recomendaciones para 'C' Project Architecture Guidelines?
- Cómo crear una interfaz que promueva el mantenimiento del código y sea extensible para futuras actualizaciones.
- Directrices para la creación de bibliotecas. Ejemplo, ¿cuándo debería considerar usar bibliotecas estáticas vs dinámicas? Cómo diseñar correctamente un ABI para hacer frente a cualquiera de los dos.
- Archivos de encabezado: qué partición y cuándo. Ejemplos sobre cuándo usar 1: 1 frente a 1: muchos .h a .c
- Cualquier cosa que sienta que omití pero que es importante cuando intento diseñar un nuevo proyecto en C.
Idealmente, me gustaría ver algunos proyectos de ejemplo que van de pequeños a grandes y ver cómo la arquitectura cambia según el tamaño del proyecto, la función o el cliente.
¿Qué recurso (s) recomendaría usted para tales temas?
Lista buena. La otra cosa que ver con los encabezados es asegurarse de que cada uno sea independiente: incluye los encabezados que necesita, para que pueda incluirlo sin tener que preocuparse por qué más necesita. –
Re: punteros vacíos en la interfaz pública: prefiero usar estructuras opacas typedef'ed.De esta forma, no tiene que perder el tiempo con el reencasting, y proporciona el mismo tipo de protección de implementación. http://en.wikipedia.org/wiki/Opaque_pointer#C –
De acuerdo con Matt B. No devuelva el vacío *, use tipos de datos abstractos tipo typedef'd. Vea mi ejemplo aquí en la pregunta "Implemente una clase en su idioma favorito": http://stackoverflow.com/questions/2702450/implement-a-simple-class-in-your-favorite-language/2771898#2771898 –