[JAVA] Rechercher une instruction Switch qui peut être convertie en une expression Switch

Quel est cet article

Analyse du code source occasionnelle à partir d'aujourd'hui annoncée au JJUG CCC 2019 Spring -ccc-2019-spring) est une version détaillée du cas d'utilisation expliqué dans le contenu de l'annonce.

Aperçu

À partir de Java 12, des expressions Switch ont été ajoutées en tant que fonctionnalité d'aperçu. Puisque Switch peut être traité comme une expression, il peut être écrit dans la rvalue de l'instruction d'affectation.

Pour plus de détails, cet article est très facile à comprendre.

Quand une nouvelle syntaxe est ajoutée au langage de programmation, je me demande souvent: "Alors, à quel point est-ce utile?"

Cette fois, afin de résoudre une telle question et de satisfaire la curiosité intellectuelle, j'aimerais rechercher dans le code source réel une instruction Switch qui peut être convertie en une expression Switch.

Vue d'ensemble du processus de recherche

La technologie d'analyse du code source est utilisée pour rechercher le code source.

Plus précisément, il utilise une bibliothèque appelée JavaParser pour effectuer une analyse de syntaxe et effectuer un processus de recherche sur l'arborescence de syntaxe abstraite générée.

Cette fois, j'ai pensé à «l'instruction Switch qui peut être convertie en expression Switch» comme suit, et j'ai recherché les instructions Switch qui correspondent aux conditions.

Le code source utilisé pour l'analyse est ici.

Cible de recherche

J'ai obtenu 100 projets Java sur GitHub par ordre décroissant d'étoiles et je les ai ciblés. La requête de recherche est la suivante.

curl -o github_java_top100.json "https://api.github.com/search/repositories?q=stars:>0+language:Java&sort=stars&order=desc&page=1&per_page=100"

Étant donné que la cible de l'enquête a été acquise vers février 2019, elle peut être différente de l'ordre actuel des étoiles. De plus, nous ne considérons pas à quoi ressemble le projet ou s'il est archivé.

Résultats de recherche

Le résumé des résultats de la recherche au format markdown est ici.

Je n'ai pas été en mesure de confirmer tous les résultats de la recherche, mais un rapide coup d'œil semble indiquer que la recherche s'est déroulée comme prévu. Voici deux exemples de bons résultats de recherche.

Depuis PullToRefreshBase.java du projet Android-PullToRefresh

switch(getPullToRefreshScrollDirection()) {
    case HORIZONTAL:
        oldScrollValue = getScrollX();
        break;
    case VERTICAL:
    default:
        oldScrollValue = getScrollY();
        break;
}

Depuis RunParameterDefinition.java du projet jenkins

switch(getFilter()) {
    case COMPLETED:
        lastBuild = project.getLastCompletedBuild();
        break;
    case SUCCESSFUL:
        lastBuild = project.getLastSuccessfulBuild();
        break;
    case STABLE:
        lastBuild = project.getLastStableBuild();
        break;
    default:
        lastBuild = project.getLastBuild();
        break;
}

Résumé

Cette fois, en recherchant une instruction Switch pouvant être convertie en expression Switch, j'ai en fait exécuté un processus de recherche sur le code source du projet sur GitHub.

Personnellement, j'ai l'impression qu'il y a plus d'endroits qui peuvent être convertis que ce à quoi je m'attendais.

À l'avenir, utilisons le type Switch où il peut être utilisé.

Recommended Posts

Rechercher une instruction Switch qui peut être convertie en une expression Switch
[Android] Je souhaite créer un ViewPager pouvant être utilisé pour les didacticiels
Ecrire une classe qui peut être ordonnée en Java Un petit mémo standard
Vérifiez si une chaîne peut être convertie en int sans utiliser Integer # parseInt
Créer un contrôle de page qui peut être utilisé avec RecyclerView
Créez un fichier jar qui peut être exécuté sur Gradle
Introduction à Rakefile qui peut être effectuée en 10 minutes environ
Convertir un tableau potentiellement nul en flux
Comment créer une paire de clés d'ecdsa dans un format lisible par Java
J'ai posé une question qui peut être utilisée pour des entretiens techniques
Installation de Mecab qui peut se faire presque en tapant une commande
J'ai rencontré une grande déclaration de commutateur
Ne pas être un oncle statique
Notez que VS Code + JUnit 5 peut être utilisé sous Windows 10
Orienté objet qui peut être compris par les fées
Déconnectez un fichier CSV qui peut être lu par Excel à l'aide de la fonction logback
J'ai créé un client API THETA qui peut être utilisé pour le développement de plugins
Essayez d'enregistrer les données pouvant être lues par JavaFX au format PNG