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.
À 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.
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.
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é.
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;
}
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