[Android-Kotlin] Convertir le préfixe m et le préfixe s, qui sont des problèmes avec java en kotlin, sont supprimés par le remplacement des expressions régulières.

introduction

J'écris habituellement du matériel technique sur mon blog personnel, mais je le posterai pour la première fois sur Qiita selon les spécifications du calendrier de l'Avent! Ce que je veux dire dans cet article, c'est qu'il est pratique de rechercher ou de remplacer par des expressions régulières. (En fait, kotlin est maladroit et pas très pertinent.)

◯ -Qu'est-ce que le préfixe?

Il s'agit d'ajouter un caractère (partie ◯) qui est fixé au préfixe (début) de manière hongroise selon la convention de dénomination des variables.

Exemple

int strHoge;
static textHoge;

convention de codage android-java

Dans le guide de style android-java, le préfixe de champ privé est "m" et le préfixe de champ statique est "s", qui est habituellement utilisé.

guide de style android-java

public class Book {
    
    private int mId;
    private String mTitle;
    private int mPrice;
    
    public Book(final int id,final String title, final int price){
        mId = id;
        mTitle = title;
        mPrice = price;
    }
}

Don't use m-prefix and s-prefix Depuis l'époque d'Android-java, je pense que cela n'a pas beaucoup de sens. Cela dit, j'utilise personnellement beaucoup la notation hongroise. Il y a plusieurs raisons pour lesquelles le préfixe m et le préfixe s ne sont pas inclus, mais lorsque vous utilisez le ButterKnife standard dans la bibliothèque de liaison, celui à lier est privé, vous voulez donc ajouter m, mais en raison des spécifications de liaison de ButterKnife, il devient public et incohérent Faire. Veuillez consulter d'autres sites pour d'autres raisons. La notation hongroise peut être trouvée de différentes manières en recherchant des groupes négatifs / affirmatifs (style vim vs emacs), donc je pense que c'est intéressant de la regarder. Bref, il vaut mieux l'utiliser correctement en fonction de l'heure et du cas.

Conventions de codage Android-Kotlin

Il n'y a aucune mention de l'ajout du préfixe m ou du préfixe s. Dans le cas d'Android-java, je l'ai juste utilisé habituellement. Ainsi, lorsque je crée une nouvelle application Android avec kotlin à partir de maintenant, je n'ajoute pas de préfixe en premier lieu. (Peut-être que certaines personnes font une erreur)

convert java to kotlin Pour ceux qui ont préfixé avec java, le préfixe m et le préfixe s resteront si vous utilisez la fonction de conversion automatique en kotlin dans l'environnement Android Studio.

before java

public class Book {
    
    private int mId;
    private String mTitle;
    private int mPrice;
    
    public Book(final int id,final String title, final int price){
        mId = id;
        mTitle = title;
        mPrice = price;
    }
}

after convert java to kotlin

class Book(private val mId: Int, private val mTitle: String, private val mPrice: Int){

}

C'est dommage.

Supprimer le préfixe m et le préfixe s

Remplacez par une expression régulière dans laquelle tout le monde est bon. Vous pouvez également utiliser des expressions régulières dans Android Studio. La description des expressions régulières est presque la même dans toutes les langues. Personnellement, je l'utilise souvent avec du rubis.

Référence de la syntaxe des expressions régulières Android Studio (IntelliJ IDEA mais identique) https://www.jetbrains.com/help/idea/2016.2/regular-expression-syntax-reference.html#d1540635e834

Exécution de remplacement en un seul coup

Remplacez le préfixe m en bloc. (Pour le préfixe s, remplacez (m) par (s))

Caractère de recherche:([\s|\t]+)(m)([A-Z])([a-z]+)
Caractère de remplacement:$1\L$3$4

Comme le montre l'image, Match case (sensible à la casse) et Regex (utiliser des expressions régulières) sont obligatoires et doivent être cochés. Puisque seul le fichier kotlin de base est pris en charge, il est recommandé de mettre * .kt dans le masque de fichier.

kotlin.png

Je ne pense pas que vous ayez besoin d'une explication détaillée, donc je n'expliquerai que la fonction de capture. Si vous utilisez () comme caractère de recherche, vous pouvez capturer (réutiliser) ce caractère. Le premier () est de 1 $ et ressemble à ... Il y a pas mal de gens qui connaissent l'expression régulière mais ne connaissent pas la fonction de capture, donc si vous ne la connaissez pas, c'est pratique de l'essayer.

Faites attention

Si id tel que mId → id chevauche d'autres variables locales ou des mots réservés, cela ne fonctionnera pas bien, donc même si vous les remplacez tous en même temps, vous devez effectuer un test de régression après la conversion. Il est plus sûr de vérifier la cible de remplacement individuellement. Il se compile, mais peut provoquer des problèmes ou des erreurs lors de l'exécution.

Surveillance

Il peut être utilisé non seulement lors de la conversion en kotlin, mais également lorsque vous souhaitez supprimer le préfixe de java, veuillez donc l'essayer une fois. Expression régulière rarement utilisée ou non utilisée dans Android Studio. Dans certains cas, l'efficacité du développement augmentera, veuillez donc l'utiliser de manière positive!

De côté

Tout le code du projet actuellement attribué a été converti de java en kotlin. Au début, je ne savais pas si j'avais un objectif, alors j'ai continué à répondre et, en fait, j'ai réussi à répondre en 12 jours ouvrables environ. (Il y a une histoire d'échec une fois dans la version et de retour à java. Trauma) Cependant, la fonction de conversion automatique seule ne peut pas le faire du tout, et plus le projet est volumineux (plus la quantité de code est importante), plus les erreurs se produisent. Il y a eu environ 8000 erreurs, mais les erreurs de type non nul uniques à kotlin sont également les mêmes, mais il y a eu diverses corrections de code et c'était difficile. Cependant, je suis heureux que les spécifications fonctionnelles de kotlin soient très faciles à utiliser et aient été modifiées. Bonne vie de kotlin!

Recommended Posts

[Android-Kotlin] Convertir le préfixe m et le préfixe s, qui sont des problèmes avec java en kotlin, sont supprimés par le remplacement des expressions régulières.
Extraire des éléments en remplaçant une expression régulière d'une grande quantité de HTML avec java
Je veux faire des transitions d'écran avec kotlin et java!
Je veux faire une liste avec kotlin et java!
Je veux créer une fonction avec kotlin et java!
Je veux implémenter diverses fonctions avec kotlin et java!
Je veux revenir à l'écran précédent avec kotlin et java!
Remplacer par une valeur selon la correspondance avec une expression régulière Java
[Android] Convertissez Map en JSON à l'aide de GSON avec Kotlin et Java
[Android] Convertir le code Java Android en Kotlin
<java> Fractionner l'adresse avant et après l'adresse avec une expression régulière