2010-05-09 13 views
8

He tenido la intención de iniciar una biblioteca de fragmentos de código reutilizables por un tiempo y nunca parece estar a la altura. Por el momento, tiendo a tener algunas clases/archivos transitorios que arrastro fuera de proyectos antiguos.Inicio de un repositorio de código personal reulable

creo que mis principales problemas son:

  • dónde empezar. ¿Qué estructura debería tener mi repositorio ? ¿Debería ser una biblioteca compilada (según corresponda) o solo clases/archivos, puedo ingresar al proyecto ? O un proyecto de biblioteca que se puede incluir? ¿Cuáles son las implicaciones de la licencia de eso?

  • En mi experiencia, una biblioteca construida/minificada saldrá rápidamente de la fecha y se perderá la fuente. Así que Me estoy inclinando hacia la fuente que puedo exportar de SVN e incluir en cualquier proyecto .

  • Propiedad intelectual. Estoy empleado, por lo que una gran parte del código I escribe no es mi IP. ¿Cómo puedo asegurar que no proporciono mi propio IP usándolo en proyectos en el trabajo y en en casa? Estoy pensando que la mejor manera sería de licenciar mi biblioteca con una licencia de fuente abierta y asegurarme de que solo agregar a ella en mi propio tiempo usando mi propio equipo y por lo tanto me aseguro de que que si lo uso en una proyecto de trabajo las mismas reglas se aplican como si fuera usando una biblioteca de terceros.

  • Escribo en muchos idiomas diferentes y con frecuencia necesitaría dos o más partes de esta biblioteca.

  • ¿Debo mirar a la implementación de unos proyectos de plantilla y un proyecto básico para cada uno de mis elegidos componentes reutilizables y lenguajes?

¿Alguien más tiene este tipo de biblioteca y cómo la organizas y actualizas?

+0

Esto no es independiente del idioma. La forma en que diseñe y cree una biblioteca depende en gran medida de qué idioma (s) esté utilizando. –

+1

Es independiente del idioma. No estoy hablando de una "biblioteca" como en jquery o Lucene, estoy hablando de organizar mi propio repositorio SVN para incluir fragmentos de código para varios idiomas que puedo usar en muchos escenarios diferentes. No quiero una DLL que acabo de incluir en proyectos. Lo siento si eso no está claro. –

Respuesta

3

Regla número uno. Si desea usarlo para usted, no lo use en el trabajo y no trabaje en él en el trabajo. Incluso bajo esas condiciones, algunos empleadores pensarán que lo poseen incluso si trabajó en él durante el período de tiempo (tiempo calendario) que trabajó para ellos. Algunos incluso pueden ser más ridículos que eso. Entonces, ni siquiera menciones que existe.

Habiendo dicho esto, ponerlo bajo una licencia BSD en sourceforge puede permitirle usarlo con su empleador NEXT siempre que aclare las reglas básicas por adelantado - dígales que se está apropiando de dicha biblioteca y posiblemente que la haya escrito.

IANAL - No soy abogado. Es posible que desee consultar con uno.

Prefiero trabajar en mis cosas en mi tiempo y mis máquinas y nunca mencionarlo. Luego, cuando las empresas me piden que firme uno de esos "somos dueños de todas sus cosas", me aseguro de que no se aplique a las cosas en el hogar; esto ha requerido que se modifique en algunos casos.Incluso en ese caso, si quisiera usar el código en el trabajo, me preocuparía perder la propiedad porque algunas de esas líneas se han borrado.

No se preocupe por reinventar la rueda. Te pagan para escribir software. Y cuando realmente empiece la vida, tendrás menos tiempo para la programación de hobby ;-)

1

Como dijo Neil, muchos de los detalles de implementación de la respuesta dependen de tu idioma.

Sin embargo, se hace 2 puntos muy válidos:

  • que es mejor tener la biblioteca en forma de código fuente, incluso para los lenguajes compilados, por razones obvias

  • Si desea conservar la IP y usarlo fuera del trabajo, luego hacerlo al 100% fuera del trabajo, licencia con una licencia muy permisiva. Algo como el zlib license podría ser apropiado.

Un punto más, aunque - Usted es mejor si se asegura de que su empleador está bien con el uso de ese código !!!. Puede publicarlo de forma anónima/bajo un seudónimo si ese permiso es difícil/inviable de obtener.

2

me gustaría ir con un enfoque ligero:

  • Uso de Git o Mercurial, posiblemente con Dropbox si no quiere que se organizó: desea el control de versiones no importa lo que está haciendo, y distribuido el control de versiones es especialmente perfecto si no planea compartir; no se necesita un repositorio central
  • Guarde lo que use. No pierda el tiempo creando código porque cree que lo volverá a utilizar más adelante; espere hasta que esté por escribirlo dos veces antes de agregar cualquier trabajo. Luego arroja el trabajo duplicado allí, y estarás listo si ocurre por tercera vez.
  • Haz un directorio por idioma; no se puede volver a usar Java en Python, después de todo

Aquí hay una estructura de directorios que podría intentar:

+ src 
| + python 
| |  + emailing 
| |  | // the source goes in here 
| |  + quick-profiling 
| + java 
| + c++ 
+ notes 
    // This may not be your thing, but it's a convenient place for them 
1

El problema con su idea, y con el concepto de fragmentos de código en general, es que se cae mal si su fragmento tiene un error. Para el enfoque de fragmentos, deberá corregir el error en el código fuente de todas las aplicaciones que usaron el fragmento. Si, por otro lado, crea bibliotecas binarias, solo necesita corregir el error una vez en el código de la biblioteca, probarlo allí, volver a vincular, ejecutar las pruebas de regresión de su aplicación, y listo. Esta es la razón por la cual los programadores profesionales aborrecen los fragmentos de código.

+0

Muy justo comentario, tal vez los patrones son mejor en mi cabeza. –

Cuestiones relacionadas