Sind anonyme Klassen eine schlechte Idee?

8

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.

    
Allain Lalonde 06.11.2008, 16:23
quelle

5 Antworten

13

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.

    
Jon Skeet 06.11.2008, 16:26
quelle
4

Nun, ich benutze es normalerweise nur, wenn ich eine Implementierung einer Schnittstelle für einen einzigen Zweck brauche (und eine Schnittstelle mit wenigen Funktionen oder den Code, weil es wirklich schnell hässlich ist) ... wie im folgenden Beispiel:

%Vor%     
Vinze 06.11.2008 16:33
quelle
1

Im Allgemeinen beschränke ich anonyme Klassen auf wenige Zeilen. Irgendetwas länger als, sagen wir 5, machen eine benannte Klasse.

    
sblundy 06.11.2008 16:26
quelle
1

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:

  1. Große und komplexe Klassen sollten nicht anonym sein.

  2. Die Lesbarkeit der Containerklasse muss gewährleistet sein.

  3. TROCKEN - wiederhole dich nicht. Erstellen Sie nicht zwei identische anonyme Klassen.

  4. 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

    
Rudi 03.09.2013 21:02
quelle
1

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.

    
bruno conde 06.11.2008 16:41
quelle

Tags und Links