Va bene esporre componenti di implementazione in una libreria?

1

Sto scrivendo una biblioteca per il consumo generale (è software libero e open source). Va bene avere uno spazio dei nomi visibile (ad esempio Library.Implementation ) per componenti di sola implementazione che rimangono pubblici per motivi tecnici (condivisione tra più pacchetti / assiemi), ma che non fanno parte della libreria corretta e l'utente deve evitare utilizzare?

Possiedo meccanismi che potrebbero consentirmi di condividere i componenti nascondendoli agli utenti, ma sono difficili da utilizzare a causa di motivi tecnici.

Ciò non danneggerebbe l'integrità della libreria, in quanto i componenti sono principalmente codice di utilità e la libreria segue correttamente l'occultamento delle informazioni. Esempi di componenti includono varie funzioni di conversione, una speciale varietà di tuple e alcuni comparatori. Gli utenti potrebbero anche trovare utili i componenti, ma non sono ciò di cui tratta la libreria.

    
posta GregRos 22.03.2015 - 18:45
fonte

1 risposta

3

Nel software proprietario vuoi nascondere i dettagli dell'implementazione, mentre nel software libero non ti interessa (e accetterebbe qualcuno che estenda la tua libreria in modi inattesi usando i dati di implementazione). Penso anche che sia legato alla nozione di astrazioni leaky , e dal momento che hai commentato che la tua libreria sarà software libero, io suggerirei di mettere la parte di implementazione in uno spazio delimitato "implementazione" del nome (o qualsiasi cosa supporti il linguaggio di programmazione).

Puoi aggiungere un commento che dice che il codice di implementazione specifico è una API unstable che potrebbe cambiare senza preavviso.

Inoltre, un utente della tua libreria potrebbe utilizzare la libreria per l'uso principale previsto e utilizzare anche i dettagli di implementazione per altri obiettivi (del suo programma principale).

In origine era un commento, che ho leggermente ampliato a una risposta per ogni richiesta.

    
risposta data 22.03.2015 - 19:04
fonte

Leggi altre domande sui tag