2011-02-28 15 views

Respuesta

11

No. Simplemente agrega crumble y gastos generales.

Uno de los mayores problemas que tendrá que afrontar como mantenedor es averiguar qué encabezados no deben incluirse en y deshacerse de ellos. Cuando llegas a una lista de más de 20 encabezados, comienzas contemplating ugly things como una fuerza bruta a través de él (eliminando uno a la vez y viendo si algo se rompe).

Sea amable con las personas que tienen que mantener sus cosas en el futuro. Use los encabezados que necesita por módulo, nada más ... nada menos :)

+1

... y, por supuesto, esta fuerza bruta se complica aún más por el hecho de que debe probar "si algo se rompe" en cada SO soportado, potencialmente bajo múltiples configuraciones de tiempo de compilación diferentes. – caf

0

Un archivo de encabezado es en realidad lo que incluye desde su programa c. Contiene estructuras de datos como estructuras, macros, definiciones de funciones, etc. A veces, un único archivo de encabezado puede estar bien, comprar si su programa crece en componentes lógicos, es posible que necesite más.

3

Suscribo personalmente a una filosofía de "ponlo donde lo usas". Hace que sea mucho más claro qué archivos usan qué, dónde están las dependencias, etc.

Imagine que tiene un encabezado MyHeader.h. Si realiza un cambio que requiera cambiar el código que se basa en él, es fácil encontrar ese código dependiente si cada archivo que lo usa tiene un #include "MyHeader.h"; puede hacer una búsqueda global de la declaración de inclusión.

Si por el contrario sólo se incluye MyHeader.h en alguna otra cabecera MyHugeHeader.h, y luego incluir que en sus archivos no se puede hacer lo mismo, ya que todo lo que está en los archivos que utilizan MyHeader.h es #include "MyHugeHeader.h", mismo que cada otro archivo.

1

Preferencia personal realmente ... No importa cómo se formateará siempre que sea coherente (lo que hace que sea fácil de leer) . Puede ponerlo todo en un archivo de cabecera o puede simplemente ponerlo en cada archivo que lo necesite. También depende de cómo se carguen los demás incluye todo lo que venga después de que el principal no necesite sus inclusiones, etc., así que usar el mismo archivo de encabezado para TODOS tus otros archivos C puede o no (depende del compilador) incluir los mismos incluir múltiples veces.

Editar: Estoy de acuerdo con Mac también, ponerlo en el que utiliza es una cosa muy, muy agradable de hacer, así

1

Hay cosas que no se ha señalado:

  • que no sean necesarios dependencias agregan al tiempo de compilación. Cuando modifique un encabezado, tendrá que volver a compilar todas las unidades de compilación que lo incluyan directa o indirectamente. Si la inclusión no es necesaria, la recompilación tampoco lo es. Cuanto más grande sea su programa, mayor será el problema, especialmente si ha dividido sus programas en compiladores cuya compilación tiene que desencadenar manualmente.

  • los encabezados de precompilador pueden ser más eficientes cuando agrega dependencias innecesarias.

1

no me deliberadamente poner toda mi includes en un fichero de cabecera única, simplemente porque si cambia uno de estos archivos de cabecera incluidos, tendrá que volver a compilar todo lo que ha incluido el "maestro" archivo de inclusión . Esto puede llevar a tiempos de compilación innecesariamente largos para un solo cambio de línea.

Dicho esto, no dedicaría demasiado tiempo a asegurarme de no ser demasiado liberal con las declaraciones de inclusión. Algunos ingenieros pasarán mucho tiempo tratando de reducir las inclusiones para ahorrar tiempo de compilación, y creo que les conviene más tiempo resolver problemas o trabajar en nuevas funciones.

3

Poner todos los encabezados posibles en un encabezado de aplicación es tan erróneo como erróneo.

Esto es la pereza que tiene un gran precio. Hace construcciones frágiles. Hace difícil comprender dónde están las verdaderas dependencias y, por lo tanto, es difícil refactorizar o reutilizar el código.

Hace que sea difícil de probar.

Pero el mayor problema es que representa la pereza intelectual y alienta más de lo mismo.

Como todos los problemas de programación, haga lo que necesite, ni más ni menos. Piense en el mantenimiento. Piense en la gestión de compilación.

Simplemente PIENSA.

Cuestiones relacionadas