[JAVA] Denken bei der Einführung einer neuen Bibliothek

Dieser Artikel ist der 17. Tag des 2019 New Graduate Engineer Advent Calendar 2019.

TL;DR

Vorwort

Ich habe am 1. Oktober 2018 angefangen, als Ingenieur zu arbeiten. Ich bin eine 19-jährige Person und werde sie in diesem Adventskalender veröffentlichen.

In diesem Artikel werde ich die "Ideen bei der Einführung einer neuen Bibliothek" zusammenfassen, die ich während der Entwicklung über ein Jahr lang gewonnen habe.

Ich werde so viel wie möglich auf allgemeine Inhalte abzielen, aber die Sprache ist "Java" / "Kotlin" (= "JVM" -Serie), benutze "Intellij" -Serie "IDE" und verwende eine Art Framework (zB "SpringBoot"). Ich werde vor Ort schreiben.

Da dieser Artikel eine Schlussfolgerung aus meiner eigenen Erfahrung ist, kommentieren Sie bitte, wenn Sie irgendwelche Meinungen haben.

Überlegen Sie, ob Sie schauen müssen

Das erste ist die Entscheidung, nach der Implementierung eines anderen zu suchen oder diese von Hand zu schreiben. Wenn ich in den folgenden drei Punkten festsitze, versuche ich, die Implementierung einer anderen Person zu finden.

--Easy und seine Implementierung können in großer Anzahl im Projekt erscheinen (= Sie können erwarten, dass jemand Util macht)

Überprüfen Sie, ob die Bibliothek installiert werden muss

Wenn ich mich entscheide, nach der Implementierung eines anderen zu suchen, versuche ich zu prüfen, ob ich die Bibliothek als nächstes installieren muss.

Überprüfen Sie, ob es sich um eine Funktion handelt, die der Sprache zugeordnet ist

Sie sollten zuerst nach den Funktionen suchen, die der Sprache (Standardbibliothek) beiliegen.

Die Funktionen, die die Sprache begleiten, sind äußerst stabil und zuverlässig, und es gibt fast keine Situationen, in denen sie nicht verwendet werden können. Insbesondere in Java werden verschiedene Funktionen unter dem Java-Paket definiert, sodass es viele Situationen gibt, in denen es verwendet werden kann.

In Anbetracht der Situation muss jedoch eine geeignete Entscheidung getroffen werden, z. B. "Sie können dies tun, ohne die Bibliothek zu installieren, aber Sie wagen es, sie zu installieren" (z. B. "Java8-> Java11" enthält Pakete, die verschwinden, sodass Pakete verschwinden ". Erleichterung der Aktualisierung mithilfe einer Bibliothek ").

Suchen Sie in der installierten Bibliothek

Wenn Sie zu dem Schluss kommen, dass es sich nicht um eine der Funktionen handelt, die mit der Sprache geliefert werden, ist es eine gute Idee, in der von Ihnen installierten Bibliothek nach der Funktion zu suchen. Die Gründe sind die folgenden drei Punkte.

  1. Das Projekt sollte nahe an der Mindestkonfiguration liegen
  2. Die Bibliothek selbst und die verwendeten Abhängigkeiten gelten als zuverlässig (insbesondere die Bibliotheken, von denen das Framework abhängt).
  3. Selbst nützliche Bibliotheken kommen nicht immer durch Suchen heraus

Was 1 betrifft, habe ich eine Situation erlebt, in der sich etwas in Abhängigkeit von der Kompatibilität zwischen Abhängigkeiten ändert. Um so tiefe Probleme zu vermeiden, führe ich nicht so viel Neues wie möglich ein, und diejenige, die näher an der Mindestkonfiguration liegt, befindet sich im Status Die Idee ist, dass es besser ist, es zu beenden.

Zweitens, weil das Framework so viele Funktionen hat, dass es in bestimmten Situationen wiederverwendet werden kann, oder die Bibliotheken, von denen das Framework abhängt, nützliche enthalten können. Da es unwahrscheinlich ist, dass sich das Framework ändert und sich die Bibliotheken, von denen das Framework abhängt, ändern, wird es als sicher angesehen, die darin enthaltenen Funktionen zu verwenden.

In Bezug auf 3 gab es gelegentlich Fälle, in denen ich die Informationen bedauerte, die auch nach der Suche herauskamen, z. B. veraltet oder nicht die besten. Daher ist es besser, zuerst in mein Projekt zu schauen. Weil es einfach ist. In einem extremen Beispiel gab es eine Szene wie "Es ist eine Bibliothek, die von einem super berühmten Framework übernommen wurde und tatsächlich nützlich ist, aber sie erscheint nicht, selbst wenn Sie danach suchen. Nur 4 Artikel werden auf Qiita veröffentlicht."

Wie findet man

Selbst wenn Sie sagen, dass es möglicherweise verwendbar ist, ist es ineffizient, den vollständigen Text des Quellcodes zu lesen oder nach allen abhängigen Paketen zu suchen. Daher wird empfohlen, die Suchfunktion von "IDE" zu verwenden. Ich werde.

In der IDE der Intellij-Serie können Sie beispielsweise eine mehrdeutige Suche im gesamten Projekt durchführen, indem Sie zweimal die Umschalttaste drücken. Zu diesem Zeitpunkt können Sie durch Aktivieren von "Nicht-Projektelemente einschließen" auch aus abhängigen Paketen suchen.

Das Bild ist das Ergebnis einer mehrdeutigen Suche mit einem geeigneten Wort. Sie können sehen, dass der Inhalt verschiedener Pakete extrahiert wurde.

スクリーンショット 2019-12-15 17.09.22.png

Wenn Sie es nicht finden können, wird empfohlen, die Suche durch Einführung des von Google herausgegebenen Vokabulars zu versuchen.

Aus welcher Abhängigkeit kann die Bibliothek installiert werden?

Es gibt auch eine Szene, in der "als ich danach suchte, es äquivalente Implementierungen in mehreren Bibliotheken gab". In solchen Fällen wähle ich die folgenden Prioritäten.

  1. Im Rahmenkörper enthalten
  2. Bezogen auf Framework-Abhängigkeiten
  3. Es ist weniger wahrscheinlich, dass die Bibliothek weggeworfen wird

Suchen / Auswählen einer Bibliothek

Wenn Sie es bisher noch nicht gefunden haben, sollten Sie eine neue Bibliothek installieren.

In den meisten Fällen finden Sie eine Bibliothek, die Sie zum Zeitpunkt der Suche verwenden können. Ich denke jedoch, Sie sollten sorgfältig entscheiden, ob Sie die Bibliothek einführen möchten.

Nachdem ich bestätigt habe, dass es auf Maven Central usw. veröffentlicht ist, überprüfe ich mindestens die folgenden 3 Punkte [^ doc], bevor ich die Bibliothek installiere.

--Lizenz

[^ doc]: Der Reichtum der Dokumentation mag ein wichtiger Faktor sein, aber ich ignoriere ihn, da es wahrscheinlich andere Dokumentationen gibt, wenn Sie sie durch Suchen finden können. Außerdem kann ich in meinem Fall normalerweise die "Idee" finden und den Code selbst lesen, sodass ich keine großen Probleme habe, weil ich nicht über die Dokumentation verfüge.

Lizenz

Zunächst zur Bibliothekslizenz.

Einige Lizenzen erfordern die Veröffentlichung von Software-Quellcode unter Verwendung dieser Bibliothek. Unabhängig davon, ob Sie diese Verpflichtung verstehen und akzeptieren, ist es keine gute Idee, dass kommerzielle Software plötzlich benötigt wird, um den gesamten Quellcode zu veröffentlichen.

Um solche unnötigen Risiken zu vermeiden, sollten Sie zuerst die Lizenz überprüfen.

Artikel, die ich als Referenz verwendet habe

Nutzungssituation

Als nächstes wird der Nutzungsstatus der Bibliothek angezeigt.

Egal wie nützlich eine Bibliothek erscheinen mag, wenn sie nicht sehr oft verwendet wird oder eine kurze Historie hat, können Sie Fehler und plötzliche drastische Änderungen erwarten. Wenn Sie Stabilität wünschen, sollten Sie daher keine Bibliothek verwenden, deren Nutzungsstatus nicht bestätigt werden kann.

Bestätigungsmethode

Als Beispiel sehen Sie hier, wie Sie auf der Bibliotheksseite "Maven" nachsehen.

Sie können den Verlauf der Bibliothek ab "Datum" überprüfen, wie oft das Projekt unter "Verwendungen" verwendet wird und von welchem Projekt es verwendet wird. Das Bild ist das Ergebnis einer Bibliothek namens "unbescape". Sie können sehen, dass es eine lange Geschichte hat und von bekannten Frameworks wie "Thymeleaf" verwendet wird.

スクリーンショット 2019-12-16 17.00.31.png スクリーンショット 2019-12-16 17.03.53.png

Wartungsstatus

Einige Bibliotheken werden derzeit möglicherweise nicht verwaltet. Wenn Sie eine solche Bibliothek verwenden, sollten Sie sie vermeiden, da das Risiko besteht, dass der Fehler nicht behoben wird oder die Sicherheitsanfälligkeit unberührt bleibt.

Es ist auch sicher, Bibliotheken zu vermeiden, die von Einzelpersonen entwickelt wurden, da das Risiko besteht, dass Sie nicht wissen, wann das Update beendet wird, oder dass das Update plötzlich drastische Änderungen vornimmt.

Verletzlichkeit

Bibliotheken sind häufig anfällig, und einige können innerhalb weniger Monate eine Reihe schwerwiegender Schwachstellen aufdecken (z. B. "Jackson"). Wenn sich herausstellt, dass die von Ihnen verwendete Bibliothek ernsthaft anfällig ist und es nicht einfach ist, sie zu reparieren, müssen Sie große Anstrengungen unternehmen, um sie irgendwo zu verwerfen.

Um diese Situation zu vermeiden, sollten Sie eine Bibliothek mit guter Wartung auswählen.

(Bonus) Empfohlene Bibliothek

Obwohl es auf "JVM" beschränkt ist, empfehlen wir die Bibliothek vom Typ "Apache", wenn Sie keine Bibliothek finden, die die Kriterien bisher erfüllt, oder wenn Sie mehr als eine finden und verloren gehen. Es gibt verschiedene Bibliotheken, einschließlich "Apache Commons", und alle bisher eingeführten Elemente sind zufriedenstellend.

Zusammenfassung

In diesem Artikel haben wir die Ideen zur Einführung einer neuen Bibliothek zusammengefasst.

Ich habe es in einem Durcheinander geschrieben, aber zusammenfassend bedeutet es: "Lassen Sie uns von einem Ort aus suchen, an dem die Wahrscheinlichkeit gering ist, dass die Situation" Ich möchte dies ändern "später auftritt."

Es mag übertrieben sein, aber wenn Sie etwas Neues einführen, ist es am besten zu beurteilen, ob es in einer Zeitspanne von 3 Jahren und 4 Jahren überleben wird. Je wichtiger und schwieriger zu ersetzen ist, desto sorgfältiger sollte das Risiko beurteilt werden.

Ich habe das Gefühl, meinen Halt verloren zu haben, aber ich hoffe, dieser Artikel hat Ihnen geholfen.

Recommended Posts

Denken bei der Einführung einer neuen Bibliothek
Vorstellung der Bibliothek
[Android] Eine Geschichte, die bei der Einführung von ZXing, einer QR-Code-Funktionsbibliothek, ins Stolpern geriet
Fehler beim Einführen von bcrypt
Wovon ich bei der Einführung der JNI-Bibliothek süchtig war
[Rails] Starten Sie ein neues Projekt
Ein Hinweis bei der Untersuchung von Javalin
Fehler beim Einführen der SNS-Authentifizierung
Dinge, über die Sie nachdenken sollten, wenn Sie sich für die Architektur eines neuen Systems entscheiden
Benennungsregeln beim Erstellen neuer Controller und Modelle mit Schienen