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)
- puede contener múltiples cambios de ruptura de API
- puede faltar cambios de compatibilidad hacia atrás entre versiones
- puede tener falta de esmalte
Oficial (1.0+)
- API está bloqueada hasta la próxima versión principal
- cualquier cambio introducido debería garantizar la compatibilidad con versiones anteriores
Menor (ex 1.1)
- contener correcciones de errores y / o implementaciones de funciones
- puede agregarse pero no quitarse de la API definida
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.