[JAVA] Arrêtons d'écrire le chemin de spécification dans le code dans les commentaires

(Premier post-scriptum) Les spécifications nouvellement créées par nous-mêmes sont décrites dans Markdown et gérées par GitHub. J'ai écrit quelque chose comme ça et je ne l'ai pas commis. Gestion des documents de processus de développement centrée sur GitHub

Les spécifications mentionnées dans cet article sont des «fichiers créés dans Excel et placés sur un serveur partagé qui ne sont pas gérés par l'équipe».

C'est courant, n'est-ce pas?

public class FooService {
    /**
     *Spécifications: annonce.xxx.net/development/lorem/ipsum/dolor/sit/amet/consectetur/adipiscing/elit/sed/do/eiusmod/tempor
     * incididunt_2.xlsx
     */
    public void apply() {

    }
}

Au moment où je l'ai vu, j'ai pensé: "Qu'est-ce que" _2.xlsx "... Ce chemin n'est-il pas absolument vieux?"

À propos, il y a un bonus que le chemin de la spécification est long et qu'il y a une pause dans un endroit étrange.

C'est frustrant de voir ça!

Même si je ne pense qu'à ces commentaires que j'ai rédigés avec légèreté, il y a tellement de mauvais points!

Le point du commentaire de la chaîne de caractères est-il la cause principale?

Soudain, parfois "C'est un désordre à gérer avec les commentaires. Vous devriez faire une liste avec ʻEnumet mettre une petite marque avec une annotation?" J'ai trouvé l'annotation@ DocPath` présentée ci-dessous.

C'est super simple et peu coûteux, alors essayez-le!

Comme d'habitude, l'instruction ʻimportet le constructeur sont abrégés de manière appropriée, alors écrivez ou utilisez aussilombok`!

src Tout d'abord, créez ʻEnum` comme ceci, et définissez-le comme si vous attachez une étiquette au chemin!

doc_path/Path.java


public enum Path {
Politique de conception d'API("foo.ad.xxx.net/development/api/docs/readme.xlsx"),
À propos de l'authentification("foo.ad.xxx.net/development/authentication/docs/about.xlsx"),
    DB_Table des membres("foo.ad.xxx.net/database/tables/users.xlsx"),
    DB_Table d'achat("foo.ad.xxx.net/database/tables/items.xlsx"),
Document de configuration du serveur("foo.ad.xxx.net/infrastructure/docs/service-A003.xlsx"),
Spécifications de l'API du système logistique("www.xxx.net/development/logistics/api/api.html"),
Spécifications de l'API du système de gestion des stocks("www.xxx.net/development/warehouse/api/stocks.html");

    private final String value;
}

Ensuite, faites une annotation! Faites-le vraiment. Qu'est-ce qu'une annotation de marqueur? (Je suis désolé si c'est différent)

doc_path/DocPath.java


public @interface DocPath {
    Path path();

    String note() default "";
}

C'est tout! Je vais l'essayer

service/LogisticsService.java


@DocPath(path = Path.Spécifications de l'API du système logistique)
public class LogisticsService {
    public void apply() {

    }
}

Vous pouvez également rédiger des remarques!

service/StockService.java


public class StockService {
    @DocPath(path = Path.Spécifications de l'API du système de gestion des stocks, note = "Feuille 2 pour l'attribution")
    public void take() {

    }

    @DocPath(path = Path.Spécifications de l'API du système de gestion des stocks, note = "Feuille 3 pour la réversion")
    public void revert() {

    }
}

avantage

Tout d'abord, c'est vraiment peu coûteux car il vous suffit de créer DocPath.java et Path.java!

Et certains sérieusement.

Eh bien, en un mot, j'ai été promu des commentaires à Java, donc je pourrai bénéficier de l'éditeur! C'est vrai.

en outre

C'est utile car c'est un niveau qui peut être suffisamment utilisé jusqu'à présent.

À partir de là, je présenterai d'autres points à concevoir en bonus.

Certains de ces objectifs ont déjà été réalisés par l'équipe actuelle selon les besoins.

Organiser l'apparence des annotations

Eh bien, je pense qu'il est généralement correct d'inclure le premier dans les définitions de classe et de méthode et le dernier dans les fichiers de classe.

Raw String Si vous développez sous Windows et que le chemin contient \, vous trouverez peut-être plus facile de lire et d'écrire en utilisant Raw String.

Dans ce cas, vous pouvez changer «Path.java» en «Path.groovy».

doc_path/Path.groovy


Politique de conception d'API(/\\foo.ad.xxx.net\development\api\docs\readme.xlsx/),

Je veux que ça soit beau

Si vous souhaitez aligner verticalement, il y a quelques points.

doc_path/Path.java


public enum Path {
    //@formatter:off

Politique de conception d'API("foo.ad.xxx.net/development/api/docs/readme.xlsx"),
À propos de l'authentification("foo.ad.xxx.net/development/authentication/docs/about.xlsx"),
    DB_Table des membres("foo.ad.xxx.net/database/tables/users.xlsx"),
    DB_Table d'achat("foo.ad.xxx.net/database/tables/items.xlsx"),

    //@formatter:on

(Une addition) C'est désactivé ... La même police de largeur disponible est alignée verticalement, mais est-ce la police P dans la syntaxe du code de Qiita?

Je veux détecter les liens rompus

Quand je quitte le commentaire et que je l'ai fait "Java", je peux tout faire.

Écrivez le code de test approprié et la méthode check (Path path) dans Spock

PathTestSpec.groovy


Path.values().each { check(it) }

Vous pouvez le faire comme ceci, ou vous pouvez faire en sorte que ʻEnum` se comporte

doc_path/Path.java


:
:

public void check() {
    // this.Faites quelque chose sur la valeur
}

Mais c'est d'accord.

Je veux ouvrir

Cela n'a pas non plus d'importance.

Est-il plus simple d'utiliser Repl avec ʻEnum`?

doc_path/Path.java


:
:

public void open() {
    // this.Faites quelque chose sur la valeur
}
repl> Path.Politique de conception d'API.open()

Si vous pouvez l'exécuter avec Groovy ou Scala (enfin, ce n'est pas Java9), il est rapide de dire ouvert de Repl à ʻEnum` lui-même.

En prime, À propos de la commande ouverte Mac je vais créer un lien vers les articles que j'ai écrits dans le passé. Bref, c'est un double clic, donc si c'est .xlsx, Excel s'ouvrira, et si c'est .html, le navigateur s'ouvrira, donc si c'est un Mac," "open" + this.value` suffit!

Autre liberté

Vous pouvez faire ce que vous voulez dès que vous le téléchargez.

Cependant, si vous voulez vérifier l'existence de fichiers ou exécuter des commandes externes (ʻopen, cp ou wget), Groovy` semble être plus facile.

Le point d'insatisfaction que j'ai écrit au début aurait dû être presque résolu avec l'exemple de code affiché et une petite histoire qui scintille de manière appropriée.

Dans d'autres langues?

En fin de compte, c'est juste une question de mettre les commentaires dans une constante, donc je pense que vous pouvez faire quelque chose de similaire dans n'importe quelle langue. Je ne sais pas si ce sera une annotation.

Tout ce que vous avez à faire est de créer un type d'énumération et de le placer là où vous pouvez le voir, vous devriez donc pouvoir faire quelque chose de similaire dans une certaine mesure.

Éradiquez la passe de commentaire de mensonge!

Recommended Posts

Arrêtons d'écrire le chemin de spécification dans le code dans les commentaires
Devinez le code de caractère en Java
Arrêtons l'entité divine qui exprime toutes les statistiques dans une seule classe!
L'application absorbe la différence de code de caractère
L'histoire de l'écriture de Java dans Emacs
Ajouter classpath: au chemin spécifié dans spring.datasource.schema