Ho riscontrato casi in cui sarebbe utile limitare l'accesso all'API di librerie e framework esterni per prevenire conseguenze negative nel sistema.
Ad esempio, in un'applicazione SharePoint può sembrare naturale chiamare spList.Items.GetItemById
per ottenere un elemento dell'elenco, anche forse in un ciclo, senza rendersi conto che ciò può portare a enormi problemi di prestazioni.
Potrebbe anche essere necessario vietare l'utilizzo di SmtpClient per costringere tutti a utilizzare la nostra classe per inviare e-mail, per garantire che possiamo eseguire correttamente il proxy e deridere tutte le e-mail quando ci troviamo nell'ambiente di test.
Esistono modi affidabili e ragionevolmente semplici per raggiungere questi vincoli sul codice esterno, ad eccezione di determinati punti specifici del nostro codice? Non è assolutamente necessario in ogni circostanza impedire l'accesso a questi metodi / classi, ad esempio tramite la riflessione o semplicemente una sorta di disabilitazione, dovrebbe piuttosto essere un avvertimento rigoroso che non dovrebbero essere utilizzati. Preferibilmente costringendo il programmatore ad adottare attivamente misure per superare questi vincoli se possibile / necessario.