2010-05-05 8 views
8

Estamos migrando de D7 a D2010 y estamos teniendo un debate sobre la limpieza de las rutas del proyecto. Tenemos varios directorios con una gran cantidad de archivos Pas que se incluyen en algunas rutas de proyectos, pero solo algunos de los archivos son utilizados por un solo proyecto.Agregando archivos al archivo DPR vs rutas del proyecto en Delphi 2010

Una opción es eliminar completamente las rutas del proyecto y solo tener todos los archivos usados ​​en el dpr.

La segunda opción es mantener solo los archivos necesarios en el dpr y tener rutas de proyecto a los directorios para el resto de los archivos.

¿Hay algún argumento para una opción sobre la otra?

Respuesta

9

Tener todas sus unidades explícitamente en el dpr mejora enormemente el tiempo de compilación, la finalización del código, la comprensión del error y la navegación general.
No le impide mantener sus archivos organizados en carpetas y subcarpetas, pero simplemente no confíe en las diferentes rutas para encontrarlos.
En un gran proyecto con millones de LOC, hace una gran diferencia de .

+0

Pero, ¿dónde está el límite para agregar una referencia de archivo al DPR? Quiero decir que no agregas VCL estándar como Clases y Diálogos. ¿Qué pasa con los componentes de terceros o los componentes propios? Mi proyecto es enorme y todavía quiero codeinsight rápido. –

+0

Como regla general, agrego en el dpr todas las unidades que no son parte de la VCL/componentes de terceros instalados. Esos vienen con la ruta de la Biblioteca. Todo lo demás se agrega explícitamente para que realmente no necesite la ruta de búsqueda. Por supuesto, YMMV, especialmente si usted compone todo y el resto ... :) –

+1

¿Puede dar algunas cifras sobre el efecto del tiempo de compilación? ¿Cuál fue el tiempo máximo de compilación para un proyecto 'no optimizado'? – mjn

3

Discutiría a favor de incluir todos los archivos que el proyecto utiliza en el proyecto en sí. Esto mejorará el rendimiento de las "Estadísticas" asegurando que las unidades usadas sean parte del proyecto. Además, esto le permitirá administrar su código más fácilmente dentro del Administrador de proyectos. Tener caminos complicados es frágil y puede ser difícil de manejar.

+0

+1 para señalar problemas de gestión de rutas. Después de haber trabajado en la administración de la configuración para una gran compilación de proyectos múltiples que utilizaba las rutas de la biblioteca para cualquier unidad no creada específicamente para cada proyecto, puedo responder a los dolores de cabeza que esto puede causar. Especialmente cuando un desarrollador se olvida de usar rutas relativas. Perdí la cuenta de la cantidad de veces que una "reconstrucción rápida" se extendió a una hora de buscar ubicaciones de archivos de unidades y reemplazar rutas en el archivo de proyecto. –

2

Los comentarios sobre la agilización de Insights me intrigaron y lo probaré, pero hasta ahora nunca he incluido unidades compartidas en los proyectos que los usaron. En su lugar, creé paquetes para cada biblioteca y los agregué al grupo de proyectos (principalmente para fines de organización solamente, es decir, nunca los compilé realmente como paquetes de tiempo de ejecución). Me pareció más fácil de administrar (especialmente con todas las mejoras recientes en el administrador de proyectos) que tener todos los archivos en un proyecto, ya que las jerarquías de las carpetas dentro de los proyectos individuales (paquete) no serán tan profundas y, especialmente, no hay "... "- nivel de esa manera.

1

razones para no incluir todos los archivos en el proyecto:

  • menos tiempo para abrir/cerrar un proyecto (formularios y Módulos de Datos necesitan tiempo extra)
  • refactorizaciones
  • más rápido de archivos (renombrar/mover archivos y directorios no requiere de editar todos los proyectos)
  • más fácil encontrar las unidades que son los requisitos de la base y la ubicación del punto de entrada para la lógica de aplicación (uses MyInterfaces, MyTypes, MymMainUnit;)

Y esta entrada de control de calidad:

Informe No: 77687 (RAID: 273031)
Status: Abierto Edición en el.DPR fuente se vuelve más lento con más unidades en el proyecto http://qc.embarcadero.com/wc/qcmain.aspx?d=77687

Actualización: Ahora sé que hay muchas maneras de abrir el archivo de proyecto :) - Pero mi punto es que en un DPR con 500 referencias de unidades , es difícil encontrar las unidades "importantes" (o "principales"), que son el punto de partida para profundizar en la fuente, y es más fácil investigar el código si se trata de un archivo de proyecto "liviano" que contiene solo el referencias de unidad necesarias.

+0

Búsqueda de la unidad principal siempre es fácil: 'Alt-pq' en un alemán Delphi. :-) –

+0

@Ulrich: lo siento, no puedo encontrarlo (versión en inglés), pero supongo que esto solo tiene la intención de encontrar el formulario principal. – mjn

+1

En mi D2007 es el quinto elemento del menú Proyecto. Debería llamarse algo así como "Ver código fuente" en inglés. Y muestra el * .dpr. –

9

Estoy a favor de separar "unidades de biblioteca" de "unidades de proyecto" y mantener todas las "unidades de biblioteca" en la ruta de búsqueda, con todas las "unidades de proyecto" en el archivo de proyecto. He aquí por qué:

  • Nuestros proyectos de línea de negocio son grandes, de tipo casi un millón de LOC de los proyectos, pero además de los que hay literalmente cientos de proyectos menores para todo tipo de pequeñas cosas. Tener las "unidades de biblioteca" disponibles en la ruta de búsqueda hace que sea realmente fácil usar esas unidades sin agregarlas al proyecto: ¡un paso menos que se suma!
  • El uso de la ruta de búsqueda hace que mover archivos PAS sea más fácil. Esto me importa porque estoy en el proceso de reorganizar todo nuestro "entorno de construcción" para hacer un mejor uso de los sistemas de control de versiones.
  • Cuando cambias una de las unidades compartidas y se vuelve dependiente de otra unidad compartida, no necesitas actualizar muchos proyectos, simplemente funcionan.
  • Nunca consideraría agregar componentes de terceros (o componentes VCL) a mi proyecto, entonces, ¿por qué agregar mis "unidades de biblioteca" al proyecto? Necesitamos trazar la línea en alguna parte, porque si agregamos absolutamente todos los archivos al proyecto esperando tiempos de compilación más rápidos, ¡terminaríamos con proyectos inmanejables!
  • Delphi cambia automáticamente el nombre de los archivos en su archivo DPR para que sean nombres de archivo relativos. Debido a esto, no puedes mover tu proyecto desde su posición actual. Ahora intente "ramificar" y mantenga dos copias del proyecto activas al mismo tiempo, en la misma máquina (un "lanzamiento" y un "trabajo en progreso"). (Este soy yo preparando mi entorno de construcción para GIT, con el único propósito de poder BRANCHAR).

Como referencia, mis "unidades de biblioteca" son aquellas unidades que se usan en proyectos no relacionados (piénsese: componentes y utilidades).

Cuestiones relacionadas