Sto sviluppando un framework che ha una classe chiamata StableClass
. Questa classe è "stabile": gli utenti possono contare sul proprio codice su questa classe. Le versioni future del framework avranno questa classe e saranno retrocompatibili.Come taggare un metodo/API come sperimentale?
Quello che voglio è aggiungere un metodo in questa classe, ma voglio dire agli utenti che questo particolare nuovo metodo è sperimentale e potrebbe cambiare in futuro.
esempio:
class StableClass
{
public:
void stableMethod1();
void stableMethod2();
void stableMethod3();
void unstableMethod(); // How to tag this method as experimental ?
};
Gli utenti devono conoscere il unstableMethod()
è sperimentale. Che l'API potrebbe cambiare in futuro (o meno).
Possibili opzioni:
- aggiungere la parola
experimental
come suffisso o un prefisso del nome. ad esempio:unstableMethod_experimental()
- log alla console ogni volta che il metodo viene richiamato
- tag come deprecato, ma l'avvertimento dice che è sperimentale
Qualsiasi altra opzione?
Mi piacerebbe avere l'attributo experimental
e che il compilatore sollevi un avviso in fase di compilazione (come l'attributo deprecated
), ma per quanto ne so, tale attributo non esiste.
[UPDATE]:
voglio rilasciare una versione stabile del quadro, con un paio di API nella categoria sperimentale. A volte ci vuole tempo per trovare il nome corretto, o i parametri corretti o la funzionalità corretta per un particolare metodo, o implementarlo per tutte le piattaforme supportate.
Voglio dire ai miei utenti che "questa è la nuova versione stabile del framework. Abbiamo anche aggiunto questa nuova funzionalità ma è sperimentale poiché presenta le seguenti limitazioni: ...".
Quindi, ho questo requisito in cui le versioni stabili potrebbero avere funzionalità sperimentali. Anche se potrebbe sembrare una contraddizione, è un requisito per me.
Non nel linguaggio standard. Un compilatore è libero di implementarlo come estensione, ma in ogni caso, consiglierei di scriverlo nei documenti e non di manipolare il nome della funzione o altri attributi non standard. – DevSolar
Forse: Una singola funzione sperimentale rende l'intera libreria sperimentale (un ramo sperimentale nel controllo di revisione) –
Sembra che dovrebbe essere una cosa di documentazione, non una cosa di codice ... – twalberg