Permítanme decir primero que tengo una buena cantidad de experiencia tanto en C como en C++. Sin embargo, estoy comenzando un nuevo proyecto en C y he estado trabajando en lenguajes orientados a objetos por tanto tiempo (C# y C++) que tengo problemas para encontrar una manera efectiva de encapsular la funcionalidad en un lenguaje de procedimientos. Mi primera idea fue simplemente caer de nuevo en mi conocimiento OO y estructurar algo así como:Cómo estructurar un programa C efectivamente
struct Foo
{
int x;
char *y;
};
struct Foo *new_Foo()
{
return (struct Foo *)malloc(sizeof(struct Foo));
}
void Foo_member_function(struct Foo *foo, int z)
{
foo->x = z;
}
Pero eso sólo parece tedioso y contrario al espíritu de C. Por no mencionar que es OO un hombre pobre.
Este programa en última instancia va a ser bastante considerable, por lo que a partir de una buena organización de diseño es fundamental. Me imagino que con los años de desarrollo en C, se han desarrollado ciertos patrones de diseño sobre cómo estructurar mejor el código para la mantenibilidad. Al igual que la programación funcional, espero que la programación de procedimientos tenga un paradigma que sea limpio y bastante legible.
También se aceptan apuntes de artículos y libros relevantes.
Odio elegir solo una respuesta porque todas tienen trucos útiles, pero la referencia del puntero opaco fue probablemente la más útil de la que no tenía conocimiento. ¡Gracias! – HVS