Soy un desarrollador web a punto de desbloquear el logro "Publicación de la biblioteca de primera clase" en mi carrera y estoy sudando balas (estuve toda la noche estresado). Me encantaría aprovechar la experiencia de la comunidad para ver si alguien tiene alguna sugerencia o recomendación para asegurarse de que esto sea lo más fácil posible. ¿Hay algún detalle o problema que deba tener en cuenta? ¿Hay algo especial en el proceso de construcción que pueda volver a morderme?
Aquí es donde estoy:
- La biblioteca está probada y tiene una cobertura de código de aproximadamente 97%
- La API está bien documentada y se han creado documentos xml para el soporte intellisense
- Me aseguré de que los accesores de clase públicos / privados sean precisos y correctos. Lo mismo ocurre con todos los captadores / setters
- El manejo de errores no es tan elegante como me gustaría, pero estoy en una fecha límite y he aceptado que es "tan bueno como va a ser" por ahora
- Sin registro amigable. Debug.Writeline se usó extensamente ... Recientemente he aprendido que esto es un reflejo de mi inexperiencia :(
¡Tu consejo es muy apreciado!
La biblioteca se usará para generar informes. Sombrero estándar: se conecta a la base de datos de solo lectura, realiza cálculos, formatea y envía datos a la secuencia de respuesta.
Fui aprovechado como un recurso marginal para completar uno de los programadores que renunciaron, y esta tarea me fue dada como un proyecto de "cortar los dientes". La biblioteca de clases se lanzará para que otros programadores de la compañía la utilicen mientras escriben el código de producción.
fuente
Respuestas:
Bloquear la API
El arte de construir efectivamente una API tiene que ver tanto con la gestión de expectativas como con la estructura.
Cuando digo API me refiero específicamente a cómo se nombran las clases / métodos públicos / internos y cuál es su nivel de acceso (es decir, privado / público / interno).
Si le preocupa que el código no esté completamente listo para el horario estelar, siempre puede publicarlo inicialmente como beta.
Lanzamientos:
Beta (es decir, pre 1.0)
Oficial (1.0+)
Menor (ex 1.1)
Si crees que la API necesita ser reforzada, libérala por un tiempo como beta. Eso indica que está disponible para su uso, pero no debe usarse para producción y / o código de misión crítica.
Muchas personas tratan los esquemas de versiones numeradas como lavado de cerdos, pero cuando se usan de manera efectiva, se pueden usar para proporcionar cierto margen de maniobra hasta que se resuelva la estructura.
Sus suposiciones sobre cómo se usará están equivocadas
No importa qué tan bien esté diseñado algo, las personas encontrarán una manera de abusar o crear un uso alternativo.
Una forma de manejar esto es bloquear la mayor parte de la implementación posible usando accesores (es decir, privados / públicos / internos), pero ninguna cantidad de diseño o ingeniería le dará tanta información como liberar el código a los usuarios.
Realmente no importa cuán 'perfecto' creas que puede llegar a ser tu código, tus usuarios probarán que no lo es.
Yo diría que esta es la razón principal por la que siempre es mejor usar una base de código existente en lugar de hacer una reescritura completa. En el mejor de los casos, una reescritura completa recortará la hinchazón, pero existe una alta probabilidad de que la nueva base de código contenga tantos (y posiblemente más) errores como la base de código original.
En su caso, está endureciendo la batalla desde cero, por lo que bien podría comenzar.
Parece que tienes el resto de tus bases cubiertas. La documentación de la API es vital y las pruebas serán buenas para garantizar la estabilidad cuando se realicen cambios en el futuro.
La implementación de un esquema de registro consistente será importante antes de que el código se publique para producción porque necesitará una forma de habilitar / deshabilitar / filtrar los registros de forma global. Por cierto, en la mayoría de los casos, el registro solo implica importar una biblioteca y cambiar las llamadas de salida de Debug.WriteLine () a algo como Logging.Debug (), Logging.Info (), Logging.Error (). El registrador en sí solo proporciona una implementación estándar para la configuración, el filtrado y una gama más amplia de esquemas de salida (por ejemplo, archivos, consola, etc.).
Aparte de eso, buscaría sacar el código y usarlo. Aunque solo sea por un pequeño número de usuarios para comenzar.
fuente
Estas son dos cosas que encuentro son clave para lanzar software:
Desea poder regresar y corregir errores que ha lanzado y quiere que la gente entienda qué problema resolverá su código.
Saber lo que has lanzado
Asegúrese de tenerlo correctamente versionado y firmado (si corresponde). Use su control de origen para etiquetar \ etiquetar el código asociado con la versión lanzada oficialmente. Esto lo ayudará a identificar errores más fácilmente, ya que puede volver exactamente al código fuente que lanzó. También ayudará en el futuro cuando pueda tener algunas versiones lanzadas diferentes.
Intente hacer que la última versión sea fácil de obtener y actualizar. Si se trata de un instalador, o simplemente ponerlo en un recurso compartido común depende de quién \ cuándo \ con qué frecuencia se enviará.
Asegúrese de que alguien revise su versión final, incluida la documentación. Es muy fácil ponerse nervioso o entusiasmado por lanzar software y perderse algo.
Gestión de expectativas
Documente las limitaciones y hágalas razonablemente obvias para los desarrolladores. Es bueno que los hayas encontrado. Las personas a menudo son más comprensivas si conocen las limitaciones de su software, especialmente si tiene un plan para solucionarlas.
Documente cómo le gustaría recibir comentarios, buenos o malos. Como se trata de un proyecto interno, si todos tienen acceso a un sistema común de seguimiento de errores, pídales que presenten errores en el proyecto correspondiente.
En el futuro, evite cambiar la API si es posible, esto es lo único que tiene el potencial de molestar a sus clientes. Recuerde que las excepciones también son parte de la API, aunque en C # no son parte de la documentación del método. Se puede ser posible mejorar las excepciones que son lanzadas en una fecha posterior, pero se necesita hablar con los usuarios finales y ver qué impacto tendrá.
fuente
Tengo una lista de verificación para implementaciones que pueden resultarle útiles. Hago desarrollo de escritorio pero algo de esto debería traducirse. Aquí hay algo de eso:
General:
.Net específico:
fuente