È accettabile apportare modifiche a un'interfaccia durante l'implementazione?

4

Quando scrivo una libreria / API per la prima volta di solito comincio abbozzando alcune idee su una lavagna bianca o una foglia mobile mentre penso a come interagiscono diverse parti del sistema. Questo di solito si traduce in un'interfaccia a cui aderirò quando andrò a sviluppare alcune implementazioni concrete.

Prenderò metà della stesura dell'implementazione quando mi rendo conto che è necessario apportare una modifica all'interfaccia. Ad esempio, mi rendo conto che ho esposto troppi dettagli di implementazione al client e che l'interfaccia può essere semplificata.

È questa cattiva pratica e dovrei sapere esattamente come sarà la mia interfaccia prima di iniziare a programmare qualsiasi implementazione?

Aggiorna

Nella mia situazione presumo che l'interfaccia non esista già e la stiamo creando per la prima volta. Quindi è la prima volta che l'interfaccia esisterà e stiamo lavorando alla primissima implementazione di tale interfaccia. Quindi voglio sapere se nella mia situazione, è possibile apportare modifiche a un'interfaccia mentre si codifica l'implementazione.

    
posta Snoop 27.02.2017 - 22:17
fonte

2 risposte

4

Sì, è perfettamente corretto e normale. Non è normale sapere tutto su come funzionerà il tuo sistema e cosa dovrà fare quando sarai ancora nella fase della lavagna.

    
risposta data 27.02.2017 - 22:26
fonte
0

Le modifiche sono inevitabili e quindi devono essere gestite.

Assicurati di avere uno schema di versioning chiaro (cerca versioning semantico , ad esempio), hai un log delle modifiche molto esplicito e indica chiaramente ciò che consideri parte dell'API pubblica.

Ad esempio, in alcuni casi, l'aggiunta di un argomento facoltativo a una funzione può interrompere la compatibilità con le versioni precedenti se non è previsto che il numero di argomenti cambi.

Inoltre, ci sono strumenti per aiutarti a progettare un'API. Lo sviluppo guidato dai test è uno di questi.

    
risposta data 02.03.2017 - 01:23
fonte

Leggi altre domande sui tag