[Android-Kotlin] Das Konvertieren von m-Präfix und s-Präfix, die Probleme mit Java in Kotlin darstellen, wird durch Ersetzen durch reguläre Ausdrücke entfernt.

Einführung

Normalerweise schreibe ich technisches Material in meinen persönlichen Blog, aber ich werde es zum ersten Mal gemäß den Spezifikationen des Adventskalenders auf Qiita veröffentlichen! Was ich in diesem Artikel sagen möchte, ist, dass es bequem ist, nach regulären Ausdrücken zu suchen oder diese zu ersetzen. (Eigentlich ist Kotlin umständlich und nicht sehr relevant.)

◯ -Was ist das Präfix?

Es wird ein festes Zeichen (◯ Teil) auf ungarische Weise zum Präfix (Anfang) hinzugefügt, gemäß der Namenskonvention für Variablen.

Beispiel

int strHoge;
static textHoge;

Android-Java-Codierungskonvention

Im Android-Java-Styleguide lautet das private Feldpräfix "m" und das statische Feldpräfix "s", was üblicherweise verwendet wird.

android-java style guide

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 Seit der Zeit von Android-Java habe ich gedacht, dass es nicht viel Sinn macht. Trotzdem verwende ich persönlich viel ungarische Notation. Es gibt verschiedene Gründe, warum m-Präfix und s-Präfix nicht enthalten sind. Wenn Sie jedoch das Standard-ButterKnife in der Bindungsbibliothek verwenden, ist das zu bindende privat, sodass Sie m hinzufügen möchten. Aufgrund der Bindungsspezifikationen von ButterKnife wird es jedoch öffentlich und inkonsistent Machen. Bitte verweisen Sie aus anderen Gründen auf andere Websites. Die ungarische Notation kann auf verschiedene Arten gefunden werden, indem nach negativen / positiven Gruppen gesucht wird (vim vs emacs style), daher finde ich es interessant, sie nur anzusehen. Kurz gesagt, es ist besser, es je nach Zeit und Fall richtig zu verwenden.

Android-Kotlin-Codierungskonventionen

Das Hinzufügen von m-Präfix oder s-Präfix wird nicht erwähnt. Im Fall von Android-Java habe ich es nur üblich verwendet. Wenn ich also von nun an eine neue Android-Anwendung mit Kotlin erstelle, füge ich überhaupt kein Präfix hinzu. (Vielleicht machen einige Leute einen Fehler)

convert java to kotlin Für diejenigen, denen Java vorangestellt wurde, bleiben das M-Präfix und das S-Präfix erhalten, wenn Sie die Funktion verwenden, um in der Android Studio-Umgebung automatisch in Kotlin zu konvertieren.

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){

}

Es ist Schande.

Entfernen Sie das m-Präfix und das s-Präfix

Ersetzen Sie durch einen regulären Ausdruck, in dem jeder gut ist. Sie können auch reguläre Ausdrücke in Android Studio verwenden. Die Beschreibung regulärer Ausdrücke ist in allen Sprachen nahezu gleich. Persönlich benutze ich es oft mit Rubin.

Syntaxreferenz für reguläre Ausdrücke in Android Studio (IntelliJ IDEA, aber gleich) https://www.jetbrains.com/help/idea/2016.2/regular-expression-syntax-reference.html#d1540635e834

One-Shot-Ersatzausführung

Ersetzen Sie das m-Präfix in großen Mengen. (Ändern Sie für das S-Präfix (m) in (s))

Suchzeichen:([\s|\t]+)(m)([A-Z])([a-z]+)
Ersatzcharakter:$1\L$3$4

Wie in der Abbildung gezeigt, sind Match case (Groß- und Kleinschreibung beachten) und Regex (reguläre Ausdrücke verwenden) erforderlich und sollten überprüft werden. Es wird nur die grundlegende Kotlin-Datei benötigt, daher wird empfohlen, * .kt in die Dateimaske einzufügen.

kotlin.png

Ich glaube nicht, dass Sie eine detaillierte Erklärung benötigen, daher werde ich nur die Erfassungsfunktion erläutern. Wenn Sie () als Suchzeichen verwenden, können Sie dieses Zeichen erfassen (wiederverwenden). Das erste () ist $ 1 und sieht aus wie ... Es gibt einige Leute, die den regulären Ausdruck kennen, aber die Erfassungsfunktion nicht kennen. Wenn Sie ihn also nicht kennen, können Sie ihn bequem ausprobieren.

Achtung

Wenn sich IDs wie mId → id mit anderen lokalen Variablen oder reservierten Wörtern überschneiden, funktioniert dies nicht. Selbst wenn Sie alle auf einmal ersetzen, sollten Sie nach der Konvertierung einen Regressionstest durchführen. Es ist sicherer, das Ersatzziel einzeln zu überprüfen. Es wird kompiliert, kann jedoch zur Laufzeit Probleme oder Fehler verursachen.

Aufsicht

Sie können es nicht nur verwenden, wenn Sie in Kotlin konvertieren, sondern auch, wenn Sie das Präfix aus Java löschen möchten. Versuchen Sie es also einmal. Ein regulärer Ausdruck, der in Android Studio selten oder nicht verwendet wird. In einigen Fällen steigt die Entwicklungseffizienz. Verwenden Sie sie daher bitte positiv!

Beiseite

Der gesamte Code des aktuell zugewiesenen Projekts wurde von Java nach Kotlin konvertiert. Zuerst wusste ich nicht, ob ich ein Ziel hatte, also antwortete ich weiter, und tatsächlich gelang es mir, innerhalb von 12 Werktagen zu antworten. (Es gibt eine Vorgeschichte, in der die Veröffentlichung einmal fehlgeschlagen ist und zu Java zurückgekehrt ist. Trauma) Die automatische Konvertierungsfunktion allein kann dies jedoch überhaupt nicht. Je größer das Projekt (je größer die Codemenge), desto mehr Fehler treten auf. Es waren ungefähr 8000 Fehler, aber es war auch schwierig für Fehler vom Nicht-Null-Typ, die nur für Kotlin gelten, aber es gab verschiedene Codekorrekturen. Ich bin jedoch froh, dass die Funktionsspezifikationen von kotlin sehr einfach zu verwenden sind und geändert wurden. Hab ein gutes Kotlin-Leben!

Recommended Posts

[Android-Kotlin] Das Konvertieren von m-Präfix und s-Präfix, die Probleme mit Java in Kotlin darstellen, wird durch Ersetzen durch reguläre Ausdrücke entfernt.
Extrahieren Sie Elemente, indem Sie mit Java reguläre Ausdrücke aus einer großen Menge von HTML ersetzen
Ich möchte Bildschirmübergänge mit Kotlin und Java machen!
Ich möchte eine Liste mit Kotlin und Java erstellen!
Ich möchte eine Funktion mit Kotlin und Java erstellen!
Ich möchte verschiedene Funktionen mit Kotlin und Java implementieren!
Ich möchte mit Kotlin und Java zum vorherigen Bildschirm zurückkehren!
Ersetzen Sie durch einen Wert entsprechend der Übereinstimmung mit einem regulären Java-Ausdruck
[Android] Konvertieren Sie Map in JSON mit GSON mit Kotlin und Java
[Android] Konvertieren Sie Android Java-Code in Kotlin
<java> Teilen Sie die Adresse vor und nach der Adresse mit einem regulären Ausdruck