Nachdem ich sie eine Weile benutzt habe, kann ich nicht anders, als zu fühlen, dass die Reifen, durch die man springen muss, wenn man anonyme Klassen benutzt, es nicht wert sind.
Am Ende haben Sie final
und egal, was der Code schwieriger zu lesen ist, als wenn Sie eine gut benannte innere Klasse verwendet hätten.
Was sind die Vorteile ihrer Verwendung? Ich muss etwas verpassen.
Der Vorteil ist, dass es sich um eine Implementierung von Schließungen handelt. Es ist klobig, aber es ist das Beste, was wir momentan in Java haben. Mit anderen Worten, Sie müssen keine neue Klasse erstellen, nur um einen Zustand zu erhalten, den Sie bereits als lokale Variable erhalten haben.
Ich habe einen Artikel, der C # - und Java-Closures vergleicht und warum sie überhaupt nützlich sind, das könnte helfen.
Anynome Klassen können nützlich sein. Aber was ich oft gesehen habe, war nicht nützlich. Viele anonyme Klassen waren zu groß und beeinträchtigten die Lesbarkeit. Einige Experten verwenden viele identische anonyme Klassen. Es gibt keine strenge Regel, wenn es eine gute Idee ist, eine anonyme Klasse zu verwenden oder nicht, aber es gibt Daumenregeln:
Große und komplexe Klassen sollten nicht anonym sein.
Die Lesbarkeit der Containerklasse muss gewährleistet sein.
TROCKEN - wiederhole dich nicht. Erstellen Sie nicht zwei identische anonyme Klassen.
Wenn Sie viele nicht identische, aber ähnliche anonyme Klassen haben, sollten Sie die Teile dieser Klassen identifizieren, die Sie wiederverwenden können. Versuchen Sie, das Vorlagenmethodenmuster zu verwenden.
Es ist wichtig, dass die Qualität des Codes und der Software redundant reduziert wird. "Kopieren und Einfügen" ist ein Antipattern in der Programmierung, da der ursprüngliche Code einen Fehler enthalten kann. Wenn jemand diesen Code kopiert, dupliziert er den Fehler. Zehn Wochen später findet jemand anderes den Fehler und repariert ihn, aber der andere Fehler ist immer noch im Code und es dauert weitere zehn Wochen, um ihn zu finden und zu beheben. W
Ich empfehle Ihnen diesen Artikel , den ich sehr aufschlussreich fand.
Sie sagen, dass das final Schlüsselwort überall zu finden ist, aber bei einer lokalen Klasse müssen Sie immer noch den Status der umschließenden Klasse übergeben, was auch die Lesbarkeit beeinträchtigen kann.
Tags und Links java