Come documentare API sperimentali o incomplete come @deprecated?


12

Esiste un buon termine simile ma diverso da "deprecato" per indicare che un metodo o API è nella base di codice ma non deve essere utilizzato perché la sua implementazione non è completa o probabilmente cambierà? (Sì, lo so, quei metodi non dovrebbero essere pubblici, yada yada yada. Non ho creato la mia situazione, sto solo cercando di trarne il meglio.)

Cosa suggeriscono le persone? Sperimentale, incompleto, qualcos'altro?

Se sto compilando la documentazione javadoc per questa API ancora in evoluzione, dovrei usare il tag @deprecated o esiste una convenzione migliore? Per me @deprecated implica che questa API è vecchia e che è disponibile un nuovo meccanismo preferito. Nella mia situazione, non ci sono alternative, ma alcuni dei metodi nell'API non sono finiti e quindi non dovrebbero essere usati. A questo punto non posso renderli privati, ma vorrei mettere chiari avvertimenti nei documenti.


Un tag "instabile" sarebbe anche utile. Il significato sarebbe qualcosa di diverso. "Questo dovrebbe funzionare bene, ma potremmo apportare alcune modifiche in futuro".
Borjab,

Risposte:


8

Il termine appropriato è molto probabilmente incubatore , questo è quello usato da Google e Apache:

Se dai un'occhiata più da vicino ai progetti di cui sopra, potresti notare che le API "sperimentali" (ad esempio in GWT) tendono ad avere nomi di pacchetti "dedicati", come com.google.gwt.gen2. Questo per evitare di inquinare l'API "finalizzata" futura destinata al consumo pubblico permanente, perché, sai,

"Le API pubbliche, come i diamanti, sono per sempre. Hai una possibilità per farlo nel modo giusto, quindi dai il meglio di te ..." (Joshua Bloch, How to Design a Good API e Why it Matters )


2
Mi stavo orientando verso "Sperimentale" dopo aver visto API come developer.chrome.com/extensions/experimental.html
Michael Levy,

10

Vorrei usare @deprecatedper motivi puramente pratici.

Sebbene @deprecatednon trasmetta il significato esatto che desideri, ha un vantaggio significativo: il compilatore Java ha il supporto integrato per esso. La compilazione con -deprecationflag ti consente di trovare tutti i luoghi in cui esegui l'override di un metodo obsoleto, aiutando i tuoi utenti a trovare molto rapidamente il codice sospetto. Puoi usare il @deprecatedtag Javadoc per spiegare cosa sta realmente succedendo a chiunque si preoccupi di leggere la tua documentazione. È qui che puoi dire all'utente che l'API è sperimentale, dovrebbe essere utilizzata a proprio rischio e così via.


1
+1. Punto eccellente. Avere un supporto integrato è essenziale per tali parti dell'API e incoraggia gli utenti a consultare la documentazione per capire perché queste parti sono contrassegnate come ammortizzate.
Arseni Mourzenko,

2
Stavo propendendo a qualcosa come "* @deprecated Questa è un'API sperimentale e probabilmente cambierà" almeno per ottenere l'IDE e i documenti per evidenziare il metodo e quindi avere una breve spiegazione.
Michael Levy,

Basta ricordare che deprecato creerà molti avvisi. Questo potrebbe non essere così male come sembra. Essere avvisati delle caratteristiche sperimentali potrebbe essere OK.
Borjab,

3

Non ho mai visto nulla di simile in altre API, poiché le funzionalità sperimentali o incomplete non hanno nulla a che fare con un'API pubblica.

Dal momento che non hai scelta, metti un avviso chiaramente visibile che la parte dell'API è soggetta a modifiche.


Bene. Ad esempio abbiamo: junit.org/apidocs/org/junit/experimental/package-summary.html A proposito, usare il pacchetto è stata una pessima idea. Una volta che l'API è instabile, è necessario modificare il pacchetto in modo da violare tutte le dipendenze. Un'annotazione Java sarebbe stata molto meglio
Borjab il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.