2009-08-18 8 views
5

En mi proyecto C tengo un archivo utils.c bastante grande. Realmente está lleno de muchas utilidades de diferentes tipos. Me siento un poco travieso simplemente rellenando diferentes funciones misceláneas allí. Por ejemplo, tiene algunas utilidades relacionadas con elementos de bajo nivel, como una función minúscula(), y también tiene algunas utilidades bastante sofisticadas, como la conversión a/desde diferentes formatos de color.¿Es malo tener un archivo grande de utilidad?

Mi pregunta es, ¿es muy malo tener un utils.c tan grande con muchos tipos diferentes de utilidades en él? ¿Debo dividirlo en muchos tipos diferentes de archivos de utilidad? Tales como graphics_utils.c y demás ¿Qué piensas?

+0

travieso = desorganizado? – Alex

+0

Domenic, tengo la sensación de que las respuestas a esta publicación (que parecen decir lo mismo) son 'subjetivas' en el mismo sentido en que un patrón de diseño es 'subjetivo';) En otras palabras, la etiqueta 'subjetiva' es inapropiada. :) – horseyguy

+3

No, travieso = encender. –

Respuesta

6

Si es usted el único que mantendrá las cosas, se trata de cuando la complejidad llega al punto en el que se encuentra buscando cosas. Ese sería el momento de refactorizar y reorganizar (hay un costo para reorganizar, así como hay un costo para no reorganizar).

Si es POSIBLE que alguien más mantenga un proyecto que incluya sus utilidades, debe tener en cuenta SU punto crítico cuando decida cuándo reorganizar. El suyo es MUCHO más bajo que el tuyo.

6

Tiendo a dividirlos en varios sub-utils como dices (graphics_utils) cuando es apropiado.

9

Romperlos en diferentes archivos basados ​​en categorías (gráficos, cadenas, etc.) dará lugar a una mejor organización, facilitando la localización de ciertas partes del código, teniendo archivos más pequeños, en lugar de solo uno archivo.

2

Definitivamente no es kosher, porque el próximo tipo que ingrese a su código no sabrá dónde buscar nada. Divídalo por función, ¡y sus compañeros de trabajo se lo agradecerán!

+4

Claro que lo hará. ¡Estará en el archivo gigante de utils! – womp

+1

@ womp: lol + 5chars –

3

Romperlo. Las cosas serán más fáciles de encontrar, más fáciles de reutilizar, más fáciles de refactorizar, más fáciles de probar. Recientemente necesité obtener un conjunto de métodos de manejo de fechas ISO-8601 de una clase de utilidad de Java descomunal de métodos estáticos, y fue realmente difícil encontrar el 5% del código que necesitaba.

0

Como todos los demás, los rompería. Pero tiendo a usar los Métodos de extensión ahora, así que tendría una clase (y un archivo) por clase que se está ampliando (por ejemplo, StringExtensions, SqlDataReaderExtensions, etc.). Encuentro que esto tiende a romper los métodos de utilidad muy bien.

7

Desea separarlo, no solo por motivos organizativos, sino porque tendrá muchos otros archivos que dependen de este. Debido a que todo dependerá de este archivo, hace que este archivo sea difícil de modificar porque podría causar una rotura generalizada.

http://ifacethoughts.net/2006/04/15/stable-dependencies-principle/

+0

también podría hacer que el tiempo de compilación sea menos óptimo ya que todo lo que se vincule con este archivo necesitará ser recompilado si cambia. –

2

Otra ventaja que viene de romper el archivo en separa es que cuando se coloca bajo control de origen, se puede tener un control más fino de grano. Esto realmente es útil si tiene bits que son ajustados/ampliados/especializados con frecuencia, y otros bits que son relativamente estables.

2

Otro punto: debe organizar su código, i. mi. divídalo en módulos más pequeños y clasifícalo, porque en algún momento terminarás escribiendo una segunda y tercera función para la misma cosa, simplemente porque no encontrarás esa función que sabías que estaba allí, pero tú no recuerdo su nombre

Tengo un proyecto (bastante grande) con un módulo así y hay una lógica de programación para la que hay hasta 5-6 implementaciones (para lo mismo).

Cuestiones relacionadas