[JAVA] Beim Aktualisieren meiner eigenen App habe ich ernsthaft über die Paketstruktur nachgedacht

Es gibt eine App, die ich selbst erstellt habe, TwitMorse, aber bis jetzt hat sie eine anständige Paketstruktur. Ich hatte nie darüber nachgedacht und beschloss, nach der Rehabilitation darüber nachzudenken.

Über die Paketstruktur richtig nachdenken

Einfach ausgedrückt: Verwalten von Klassen mit einer bestimmten Rolle in separaten Ordnern. Wenn es von einer Person entwickelt wird, ist es möglicherweise nicht erforderlich, da es möglicherweise nicht erforderlich ist, wenn diese Person weiß, welche Rolle die Klasse spielt, aber jedes Mal, wenn die Funktion erweitert wird: "Was? Ist es ?! "

Zum Beispiel Klassen, die Zeichenfolgen usw. konvertieren, werden in den Ordner "Zeichenfolgen" verschoben. Klassen, die für das Bildschirmanzeigesystem verantwortlich sind, werden in Ordnern (Verzeichnissen) wie "ui" und, wenn es sich um Fragmente handelt, "Fragmente" gruppiert.

TwitMorse wurde seit Oktober letzten Jahres überhaupt nicht aktualisiert, daher sind seitdem sechs Monate vergangen. Als ich es öffnete, stand dort: "Wow, ich kann mich nicht erinnern, welches ...". Also lasst uns diesmal den Unterricht richtig organisieren! Ich dachte.

Ich möchte einen leicht verständlichen Artikel vorstellen.

Ich habe bereits geschrieben, dass Pakete für die Verwaltung von Klassen nützlich sind, aber ihre Verwendung bietet noch weitere Vorteile. Plötzlich sind doppelte Klassennamen nicht mehr zulässig. Auch wenn die Verarbeitung unterschiedlich ist, ist dies nicht zulässig. Ich denke nicht, dass ein solches Problem wahrscheinlich auftreten wird, wenn Sie es selbst entwickeln, aber wenn Sie es mit einer großen Anzahl von Menschen entwickeln, werden Sie wahrscheinlich leiden. Wenn das Paket jedoch anders ist, kann der Klassenname abgedeckt werden! Dies liegt daran, dass verschiedene FQCNs Klassen unterscheiden können.

Selbst wenn sich beispielsweise mehrere Personen mit demselben Nachnamen und demselben Namen in derselben Schule befinden, können Sie sie nach Klasse und Gruppe unterscheiden, oder? Es ist das gleiche.

Zitiert aus Einführung in die Java-Paketverwaltung.

Ich werde nur Refactoring machen

Die Arbeit, bei der ich anfing zu denken, dass es einfach darum ging, ein Verzeichnis zu graben und eine Java-Datei darin abzulegen, ist überraschend langweilig.

スクリーンショット 2017-05-04 15.56.58.png

Teilen Sie es so und lassen Sie nur diejenigen draußen, die nicht mehr als eine haben (ich kenne die richtige Methode nicht).

Die Android-Entwicklung ist Android Studio, aber jedes Mal, wenn dieses Kind eine Datei in ein Verzeichnis verschiebt, fragt es "Refactor?". Ich habe "Ja" gewählt, ohne an irgendetwas zu denken.

Erinnern Sie sich an die Rolle der Klasse, denken Sie über die Verteilung nach und beenden Sie die Arbeit des Transfers ... Beim Versuch zu bauen

** Knallroter Yankee ---------- **

▂▅▇█▓▒░ ('ω') ░▒▓█▇▅▂ Wow ah ah ah ah

Der Grund, warum dies passiert, ist Weil ich die Pakete nicht getrennt habe

Die geschützten Methoden können nicht aufgerufen werden. Bisher war es geschützt, weil es sich im selben Paket befand. Nachdem sich die Paketstruktur geändert hat, wurden viele Methoden erstellt, auf die von anderen Paketen aus nicht zugegriffen werden kann (die nicht verwendet werden können), es sei denn, sie werden veröffentlicht.

Ich bin süchtig nach dieser Falle und es dauert 30 Minuten, um den Fehler zu beseitigen.

Es war wirklich hilfreich mit einer kleinen verdammten App.

Zusammenfassend sollten Sie beim Erstellen eines Projekts die Paketstruktur richtig berücksichtigen

Wenn Sie es wie ich selbst schaffen, werden Sie denken: "Ich entwickle es selbst und es ist in Ordnung, wenn es ein Paket ist", aber wenn ich nach langer Zeit mit dem Projekt spiele, verstehe ich nicht warum. Wenn Sie versuchen, es zu beseitigen, müssen Sie die Fehlerhölle als sekundäre Katastrophe bekämpfen.

** Sie sollten über die Paketstruktur richtig nachdenken! Zuerst! !! Sogar Einzelpersonen! !! !! ** ** **

Ich bemerkte das und postete es zum ersten Mal seit einiger Zeit als Rehabilitation bei Qiita.

Recommended Posts

Beim Aktualisieren meiner eigenen App habe ich ernsthaft über die Paketstruktur nachgedacht
Über das Paket
[Ruby] Ich habe über den Unterschied zwischen each_with_index und each.with_index nachgedacht
[Java] Ich habe über die Vorzüge und Verwendungen von "Schnittstelle" nachgedacht.
Als ich versuchte, meinen eigenen Dienst auszuführen, schlug dies fehl und ich schraubte ihn in den Taskplaner
Als ich mich wieder an Tribuo erinnerte, das von Oracle veröffentlicht wurde, war die Person in mir eine heiße Person.
[Swift] Ich dachte über Vergleiche nach
[java] Was ich getan habe, als ich Listen in meiner eigenen Klasse verglichen habe
Woran ich dachte, als ich anfing, von Java nach Kotlin zu migrieren