API in più lingue. Utilizzare codice idiomatico per ciascuno o supportare la stessa struttura API

3

Attualmente sto lavorando a un progetto che richiede il supporto di più lingue come cittadini di prima classe e sto affrontando un dilemma. Posso scegliere se implementare l'API il più vicino possibile per ogni lingua. Ma questo invariabile mi porta ad abbandonare alcune buone pratiche per la lingua. Per esempio. Eventi C # invece di un elenco di callback.

Quindi quello che mi chiedo è che cosa preferiresti come utente o sviluppatore di tale API. Mantieni l'API il più vicino possibile tra le lingue. O divergere quando una lingua ha un modo "migliore" di fare qualcosa?

    
posta John Smith 07.05.2018 - 16:05
fonte

2 risposte

10

Conforme alla lingua e non all'API del progetto.

La ragione è semplice. Non importa quanto sia importante un servizio, quanta mente condivisa occupa nella tua coscienza o quella dei suoi manutentori ... non può competere con la condivisione della mente che un programmatore di applicazioni riserva per il loro linguaggio di programmazione preferito. Parlare di servizio XYZ sarà sempre solo una delle tante connessioni che devono fare, e richiede sempre un po 'di informazioni specifiche sui compiti.

Quindi, non ha molto senso parlare con XYZ tramite la lingua. È più facile per qualcuno che ha già parlato con la lingua B, e comunque questo accadrà raramente. Ma c'è molto vantaggio nel rendere la connessione a XYZ nel linguaggio Un facile per gli utenti di linguaggio , perché ce ne saranno parecchi.

    
risposta data 07.05.2018 - 16:10
fonte
3

Trova un compromesso.

Da un lato, vuoi rendere felici tutti gli utenti API e quindi progettare l'implementazione dell'API per ciascun linguaggio di programmazione come più idiomatico che puoi. D'altra parte, hai solo risorse limitate. Ad esempio, se si è in grado di generare un'implementazione API per più lingue da un'origine comune, invece di scrivere e ottimizzarla manualmente, è possibile ridurre gli interventi di manutenzione di un ordine di grandezza. Ciò, tuttavia, porterà probabilmente a un codice meno idiomatico.

Dovresti anche prendere in considerazione

  • quanti utenti API ti aspetti veramente per ogni lingua

  • quanto è importante per te soddisfare tutti e ciascuno

Nota anche, se esegui il targeting per .NET (dato che hai citato C #), un'implementazione API in questa lingua sarà automaticamente riutilizzabile da qualsiasi altro linguaggio .NET, quindi evita di riavviare la ruota.

    
risposta data 07.05.2018 - 16:26
fonte

Leggi altre domande sui tag