3
votes

Existe-t-il un moyen d'avertir les autres développeurs de la fonction?

Je souhaite que les développeurs puissent utiliser la fonction, mais je veux qu'ils sachent qu'elle n'est pas destinée à être utilisée dans la plupart des cas.

Existe-t-il un moyen d'avertir les autres développeurs de la fonction. Similaire à ce que fait les peluches. Existe-t-il quelque chose comme l'annotation @Warning ("Préférez utiliser #fooo () si possible) pour la méthode? Je veux savoir comment faire java ou kotlin. Quelque chose de similaire à @Deprecated mais qui a plus de sens dans mon contexte.

Je veux que mon IDE soit également conscient de cet avertissement, pas seulement du compilateur.


7 commentaires

L'intégration IDE est généralement toujours basée sur le linter, que le compilateur appelle aussi généralement (à moins qu'il n'ait le sien). Dans tous les cas, il s'appuie sur le même ensemble de sources, vous devrez donc trouver un IDE qui se construit au-dessus de la source de manière à pouvoir le traiter.


Si l'annotation @Deprecated (ou la balise javadoc) ne correspond pas à votre besoin, essayez un message d'avertissement dans le javadoc, c'est un bon début!


Copie possible de Comment provoquer intentionnellement un avertissement personnalisé du compilateur Java message?


@Laurence merci je vais vérifier ça


@Highbrainer y a-t-il quelque chose comme une balise d'avertissement? ou vous voulez dire simplement du texte brut en commentaire


@svkaka - oui, je sais que ce n'est pas kotlin, mais ne devrait pas être trop difficile de faire quelque chose de similaire avec des annotations kotlin pures.


@svakaka AFAIK il n'y a pas de balise d'avertissement standard. Pourtant, vous pouvez écrire le vôtre!


4 Réponses :


0
votes

Malheureusement, je pense que ce n'est pas possible, mais cela dépend de l'IDE que vous utilisez, il n'y a pas de moyen Java natif pour que la méthode affiche un avertissement, vous devez apporter des modifications à l'analyseur de code de l'EDI pour obtenir ce que vous voulez


0 commentaires

0
votes

Disons que vous avez un foo.bar () Faites une délégation à la place:

foo.getBazBO().bar()

De cette façon, vous pouvez marquer le membre "spécial", trouver des utilisations. Refactoring requis.

C'est un peu comme un getter pour un objet métier spécifique:

foo.special.bar()
foo.special().bar()

Une alternative serait d'utiliser votre propre annotation , utilisez Doxygen ou un autre traitement d'annotation, investissez des efforts dans la programmation IDE. Plus d'efforts, moins de résultats immédiats.


1 commentaires

Merci, je vois que ce ne sera pas très facile à résoudre. Je vais essayer de créer un problème sur le suivi des problèmes Kotlin, car je pense que cela peut être très utile.



1
votes

Voici mon avis, il pourrait être considéré comme totalement incorrect. Vous pouvez utiliser @Deprecated pour obtenir le même résultat:

@VisibleForTesting
@Deprecated("Test ONLY, DO NOT use in production")
constructor(application: Application) : this(null, application)

Encore un exemple:

@Deprecated("test_only")
fun getNumberFormatterInstanceForTesting(context: Context, localeCode: String): NumberFormat {
        if (!::numberFormat.isInitialized) numberFormat = NumberFormat.getCurrencyInstance(parseLocaleCode(localeCode))
        return numberFormat
}


0 commentaires

0
votes

Vous pouvez utiliser l'annotation @Experimental de Kotlin:

https://kotlinlang.org /docs/reference/experimental.html#experimental-status-of-experimental-api-markers

Cela obligerait les consommateurs de telles fonctions à exiger une acceptation explicite, et vous pouvez choisir entre la propagation et la non-propagation du marqueur.

Notez que depuis Kotlin 1.3, l'annotation @Experimental est elle-même expérimentale.


0 commentaires