¿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 para que todas las demás funciones puedan interactuar?

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

    
pregunta Michael 16.01.2012 - 07:23
fuente

4 respuestas

15

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

Pero main() solo no tiene que estar aislado. Las funciones como parse_arguments(argc,argv) deben ir junto con main en lugar de separar.

    
respondido por el Dipan Mehta 16.01.2012 - 07:29
fuente
7

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

Una buena regla para seguir es cuando una función comienza a hacer algo más que apoyar la aplicación en ejecución y comenzar a hacer lógica empresarial, es hora de que salga de main.c

    
respondido por el mattnz 16.01.2012 - 10:25
fuente
4

Hay dos reglas básicas:

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

Para implementar un estándar de codificación que indique que main () siempre debe estar ubicado en un archivo llamado main.c es una buena práctica común. Este archivo, así como el propio main (), no debe contener un desorden innecesario.

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

  • Incluye archivos de encabezado de todo el programa.
  • Código de análisis de argumentos de argv, argc.
  • En sistemas sin host: configuraciones críticas de registro, 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 las anteriores.
  • En un sistema alojado: devuelve 0.
respondido por el user29079 19.01.2012 - 09:05
fuente
1

Un punto de entrada limpio en un archivo separado hace que el flujo de código sea fácil de entender y mantener. Siempre he tenido el hábito 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 razones de limpieza, es bueno mantenerlo separado.

    
respondido por el Wajih 16.01.2012 - 13:56
fuente

Lea otras preguntas en las etiquetas