Blocca l'API
L'arte di costruire efficacemente un'API riguarda tanto la gestione delle aspettative quanto la struttura.
Quando dico API, mi riferisco specificamente a come vengono denominate le classi / metodi pubblici / interni e qual è il loro livello di accesso (cioè privato / pubblico / interno).
Se sei preoccupato che il codice potrebbe non essere completamente pronto per la prima serata, puoi sempre pubblicarlo inizialmente come beta.
Uscite:
-
Beta (cioè pre 1.0)
- può contenere più modifiche alle interruzioni API
- potrebbe mancare di modifiche alla retrocompatibilità tra le versioni
- potrebbe avere una mancanza di smalto
-
Official (1.0 +)
- API è bloccato fino alla prossima versione principale
- eventuali modifiche introdotte dovrebbero garantire la compatibilità con le versioni precedenti
-
Minore (ex 1.1)
- contiene correzioni di errori e / o implementazioni di funzionalità
- potrebbe aggiungere ma non togliere l'API definita
Se pensi che l'API abbia bisogno di essere temprata dalla battaglia, allora rilasciala per un po 'come beta. Ciò indica che è disponibile per l'uso ma non dovrebbe essere utilizzato per il codice di produzione e / o mission-critical.
Molte persone trattano schemi di versionamento numerati come hogwash, ma quando vengono utilizzati in modo efficace possono essere utilizzati per fornire un po 'di spazio di manovra finché non si risolve la struttura.
Le tue ipotesi su come verranno utilizzate sono sbagliate
Indipendentemente dal modo in cui qualcosa è stato progettato, le persone troveranno un modo per abusare o creare un uso alternativo.
Un modo per gestirli è bloccare il più possibile l'implementazione utilizzando gli accessor (cioè privati / pubblici / interni) ma nessuna quantità di progettazione o ingegneria ti darà più informazioni che rilasciare il codice agli utenti.
Non importa quanto "perfetto" pensi che il tuo codice possa diventare, i tuoi utenti dimostreranno che non lo è.
Direi che questo è il motivo principale per cui è sempre meglio usare una base di codice esistente piuttosto che una riscrittura completa. Nel migliore dei casi, una riscrittura completa ridurrà l'espansione, ma è molto probabile che la nuova base di codice conterrà tutti i bug (e forse più) della base di codice originale.
Nel tuo caso sei indolenzito da zero, quindi potresti anche iniziare.
Sembra che tu abbia coperto il resto delle tue basi. La documentazione dell'API è di vitale importanza e i test saranno utili per garantire la stabilità quando verranno apportate modifiche in futuro.
L'implementazione di uno schema di registrazione coerente sarà importante prima che il codice venga rilasciato per la produzione perché sarà necessario un modo per abilitare / disabilitare / filtrare globalmente i registri. A proposito, nella maggior parte dei casi la registrazione riguarda solo l'importazione di una libreria e la modifica delle chiamate in uscita da Debug.WriteLine () a qualcosa come Logging.Debug (), Logging.Info (), Logging.Error (). Lo stesso logger fornisce solo un'implementazione standard per la configurazione, il filtraggio e una gamma più ampia di schemi di output (ex file, console, ecc.).
Oltre a questo, cercherò di estrarre il codice e di usarlo. Anche se solo da un piccolo numero di utenti per iniziare.