Pregunta

Yo he estado buscando maneras de aprender acerca de la manera correcta de manejar un proyecto de software, y he tropezó con la siguiente entrada en el blog. He aprendido algunas de las cosas de la manera difícil mencionado, otros tienen sentido, y sin embargo, otros aún no están claros para mí.

Para resumir, las listas de autor un montón de características de un proyecto y cuánto esas características contribuyen a un proyecto de 'suckiness' por la falta de un término mejor. Puede encontrar el artículo completo aquí: http://spot.livejournal.com/308370.html

En particular, no entiendo la postura del autor en la agrupación de dependencias con su proyecto. Estos son:

== == Agrupación

  • Su única fuente viene con otros proyectos de código que depende de [+20 puntos de FAIL]

    ¿Por qué es esto un problema, especialmente teniendo en cuenta el punto 3, que ha modificado sus dependencias proyectos para satisfacer las necesidades de su proyecto, no tiene, por tanto, hacen aún mayor sentido de que el código debe ser distribuido con sus dependencias?

  • Si su código fuente no se puede construir sin construir primero los bits de código paquetes [+10 puntos de FAIL]

    ¿Esto no necesariamente tiene que ser el caso para el software construido en contra de bibliotecas 3 ª parte? El código necesita ese otro código que se compila en su biblioteca antes de que el enlazador puede funcionar?

  • Si ha modificado los otros bits de código paquetes [+40 puntos de FAIL]

    Si esto es necesario para su proyecto, a continuación, lo que es evidente que has liado dicho código con el suyo. Si desea personalizar una acumulación de algunas lib, WxWidgets decir, usted tendrá que editar las secuencias de comandos que los proyectos de construcción tobulid la biblioteca que desea. Posteriormente, se le tiene que publicar esos cambios a las personas que desean construir su código, ¿por qué no utilizar un script de marca de alto nivel con los parametros ya escritas, y distribuir ese? Por otra parte, (en especial en una ventana env) si su base de código depende de una versión particular de un lib (que también es necesario para la compilación de encargo para su proyecto), ¿no sería más fácil para dar al usuario el código usted mismo (ya que en este caso, es poco probable que el usuario ya tendrá instalada la versión correcta)?

Entonces, ¿cómo responder a estos comentarios, y qué puntos puede ser que no tomar en consideración? ¿Está de acuerdo o en desacuerdo con la toma del autor (o la mía), y por qué?

Editado para su aclaración.

¿Fue útil?

Solución

  

Su única fuente viene con otros proyectos de código que depende.

Mi proyecto requiere el proyecto X.

Sin embargo, ya que mi proyecto depende de misterios interiores secretas de X, o una versión anterior de X, entonces mi proyecto incluye una copia de X. En concreto liberar N.m de X. Y ningún otro.

Trate de instalar y más nuevo X y ver lo que se rompe en mi proyecto. Desde la actualización X rompió mi proyecto, se olvide de mi proyecto. No van a luchar con algo que se rompe espontáneamente después de una actualización. Van a encontrar un componente de fuente abierta mejor.

Por lo tanto una puntuación fallar.

  

Si su código fuente no se puede construir sin construir primero los bits de código en paquete.

Mi proyecto no se basa en la API a X. Se basa en la profunda, la vinculación interna a partes específicas de X, sin pasar por la API.

Si mi proyecto sobre dependía de la API de X, entonces - para algunos lenguajes como C o C ++ -. Mi proyecto podría compilar con sólo el C o C ++ cabeceras, no los binarios

Para Java esto es menos cierto, ya que no hay encabezado independiente, no binario. Y para lenguajes dinámicos como Python () esto no tiene sentido técnico.

Sin embargo, incluso en Java y Python tienen formas de interfaz independiente de la aplicación. Si me baso en la aplicación (no interfaz), entonces he creado aún el mismo problema esencial.

Si mi proyecto depende de los binarios C o C ++, y construir cosas fuera de orden, o actualizar otro componente sin volver a la mía, las cosas pueden ir mal para ellos. Pueden ver la rareza, la rotura, la "inestabilidad". Mis aparece producto roto. No lo harán (y no puede) depurarlo. Están hechas. Van a encontrar algo más estable.

Por lo tanto una puntuación fallar.

  

Si ha modificado los otros bits de código incluido.

Tengo dos opciones cuando modifico X.

  1. Obtener aceptó como parte de X.

  2. Fijar mi programa de trabajo con X no modificada.

Si mi proyecto depende de una X modificado, no se puede instalar simplemente X, correctamente y de forma independiente. No pueden actualizar X, no pueden mantener X. Es probable que no se pueden aplicar correcciones de errores o parches de seguridad para X.

he hecho esencialmente su trabajo imposible modificando X.

Por lo tanto, la puntuación fallar.

  

A continuación, se tendrá que publicar esos cambios a las personas que desean construir su código.

En realidad, ellos me odio por eso. No quieren saber acerca de los misteriosos cambios en X. quieren construir X de acuerdo con las reglas, y luego construir mis cosas de acuerdo a las reglas. Ellos no quieren leer, pensar o estar seguro de que el kit de parches de actualización misterio se ha aplicado correctamente.

En lugar de alrededor de broma con eso, van a descargar un paquete de competir. FALLO.

  

si su base de código depende de una versión particular de un lib (que también es necesario para la compilación de encargo para su proyecto)

Esto es realmente lamentable. Si dependo de una versión con compila personalizados, que están hecho mirando mi paquete. Van a encontrar algo sin misterios interiores versión específicos y personalizados compila antes de que tendría dificultades. FALLO.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top