¿Es una buena práctica mantener la función principal separada en su propio archivo?

14

¿Es una buena práctica tener un archivo main.c que solo tenga la función principal y no otras funciones para que todas las demás funciones puedan interactuar?

Si no hay una regla definitiva, ¿cuándo es bueno hacerlo y no hacerlo?

Miguel
fuente

Respuestas:

15

Idealmente, todo el trabajo que pueda considerarse parte del código reutilizable, debe crearse en forma de biblioteca . El trabajo de equilibrio, es una aplicación que debe estar separada donde main()residirá.

Pero main()solo no tiene que sentarse aislado. Funciones como parse_arguments(argc,argv) deberían estar junto con main en lugar de estar separadas.

Dipan Mehta
fuente
7

Nuestro estándar de codificación requiere que main () esté en main.c. Otros métodos en main.c tienden a ser controladores de errores de alto nivel y funciones de ayuda para main (consulte la respuesta de @Dipan "parse_arguments", así como cosas como "display_help", etc.

Una buena regla a seguir es que cuando una función comienza a hacer más que admitir la aplicación en ejecución y comenzar a hacer lógica de negocios, es hora de que esté fuera de main.c

Mattnz
fuente
4

Hay dos reglas generales:

  1. El lector no debería preguntarse dónde ha ocultado main ().
  2. main () no debe contener desorden irrelevante.

Implementar un estándar de codificación que establezca que main () siempre debe ubicarse en un archivo llamado main.c es una buena práctica y una práctica común. Este archivo, así como main () en sí, no debe contener desorden innecesario.

Idealmente, main () y main.c solo deberían contener lo siguiente

  • Incluye archivos de encabezado de todo el programa.
  • Argumento de análisis de código de argv, argc.
  • En sistemas sin host: configuraciones de registro críticas, configuración de puntero de pila, etc. Pero solo si main () es el primer punto de entrada para el programa.
  • Llamadas para iniciar el sistema operativo, o un bucle que llama a la máquina de estado del programa, o en sistemas de escritorio alojados, creación e inicialización de ventanas relacionadas con el hilo principal de la GUI.
  • Funciones internas (estáticas) que se llaman desde main (), manejando cualquiera de los anteriores.
  • En un sistema alojado: devuelve 0.

fuente
1

Un punto de entrada limpio en un archivo separado hace que el código fluya para ser fácilmente entendido y mantenido. Siempre he tenido la costumbre de mantener una función main () muy pequeña y concisa en un archivo diferente desde donde puedo seguir los pasos del programa. Solo por el bien de la limpieza, es bueno mantenerlo separado.

Wajih
fuente