Java Irgendwas stimmt mit meinem Taschenrechner Programm nicht, ich habe den Überblick verloren.. [JavaFX]

kali-hi schrieb:
Swing basiert quasi auf AWT. Gegenüber FX ist es robust, also nicht so fehleranfällig

Auch diese Aussage ist ohne sinvolle Quellenangaben schlicht unsinnig. Warum ist JavaFX fehleranfälliger als Swing/AWT? Weil letztere nicht mehr weiterentwickelt werden, ersteres aber schon?

Piktogramm schrieb:
Die JavaFX Diskussion, bzw. ob das Veraltet sei. Die wichtige Lektion an der Stelle ist, dass es zu jedem Ansatz Nörgler gibt. Gerade wenn diese Nörgeln ohne Quellen zur Aussage kommt und erst garnicht, oder nur nach längeren Triraden tragbare Gegenvorschläge gemacht werden, gehört sowas ignoriert.
Gerade als Anfänger geht es so oder so darum Prinzipien zu lernen und die sind bei den meisten Frameworks für GUIs zumindest ähnlich.

Das ist wohl der Kommentar, der dem Threadersteller am meisten weiterhilft! Danke dafür.

Es geht doch im Grunde immer darum Prinzipien zu verstehen, gerade für Einsteiger.

@vram78
Wenn du bisher zurechtgekommen bist mit dem JavaFX Ansatz, würde ich einfach dabei bleiben. Einfach um dein "Projekt" abzuschließen. Danach ziehst du für dich dein Fazit. Solltest du nicht überzeugt sein von dem Ergebnis, wähle einen anderen Ansatz.
Du lernst auf jeden Fall für dich dazu und nur das bringt dich weiter. Viel Erfolg :)

 
  • Gefällt mir
Reaktionen: vram78
Piktogramm schrieb:
darum Prinzipien zu lernen und die sind bei den meisten Frameworks für GUIs zumindest ähnlich
Ja, und auch gerade dafür wäre Swing besser geeignet.
Ergänzung ()

Piktogramm schrieb:
ohne Quellen zur Aussage
#10 scheint dir irgendwie entgangen zu sein, wenn du des Lesens mächtig bist...
Ergänzung ()

Piktogramm schrieb:
Dein eigentliches Problem, was falsch läuft leuchtet mir nicht sofort ein. Brakepoint an void handleKeyPress(KeyCode code) wäre mein Ansatz.
So funktioniert es in der echten Welt aber nicht ... Du kannst dich nicht immer darauf verlassen, dass dir ein Debugger (oder auch ChatGpt) bei schlampiger Programmierung hilft.
 
Zuletzt bearbeitet:
@vram78
Kleiner Nachtrag. Das Debuggen mit einem Debugger halte ich für immer noch sinnvoll, vor allem beim Lernen. Ich würde aber dennoch dazu neigen jedwede Eingabe, egal ob über Button oder Keypress, zu einem Char zu wandeln und dann die Chars zu behandeln.



Egal ob AWT, Swing, Jfx. Grundlegend ist das ein Definieren von Elementen, Anordnen von Elementen und Eventhandling am Anfang. Beim Lernen nimmt sich das nichts. Wobei ich deine Ansichten ob/wieso Swing besser sei nicht teile. Bei Jfx hält die Entwicklung halbwegs mit der technischen Entwicklung mit und Jfx ist auch wesentlich näher dran an GUI Frameworks die Gluon bzw. dem was Kotlin auf Android macht.

Und Deine Quelle ist ein Link auf Meinungsbekundungen von nicht verifizierbaren Dritten. Der Anspruch an eine Quelle wäre schon eine Verlautbarung von Sun, Oracle, Openjdk, ..

Eine echte Welt, wo auf der Entwicklerkiste kein Debugger nutzbar sein soll? Wen willst du verarschen?
 
Piktogramm schrieb:
Eine echte Welt, wo auf der Entwicklerkiste kein Debugger nutzbar sein soll? Wen willst du verarschen?
Das gibt es durchaus. In dem Projekt, wo ich jetzt gerade arbeite, arbeiten wir voll allem viel an Jenkins-Pipelines (in Groovy/Java-Code geschrieben). Und wir können das, was wir schreiben, nicht am Debugger testen, weil wir gar keine lokalen Jenkins-Instanzen laufen lassen können/dürfen.
Deswegen alles immer erst ins Git-Repo pushen, dann auf dem jeweiligen Jenkins installieren, dann testen.

Was die Aussage von kali-hi überhaupt bezwecken soll, erschließt sich mir aber auch nicht. Selbstverständlich spricht nichts dagegen, beim Lernen als Anfänger einen Debugger zu nutzen (eher im Gegenteil).
 
  • Gefällt mir
Reaktionen: kali-hi
Piktogramm schrieb:
Bei Jfx hält die Entwicklung halbwegs mit der technischen Entwicklung mit
Genau das wäre ein weiterer Grund für mich, es nicht zu verwenden. Man muss nicht über jedes Stöckchen springen.

Piktogramm schrieb:
Wen willst du verarschen?
Man merkt einfach, dass du noch keine Verantwortung trägst... realitätsferne Ansichten.
Ergänzung ()

Andarkan schrieb:
Was die Aussage von kali-hi überhaupt bezwecken soll, erschließt sich mir aber auch nicht. Selbstverständlich spricht nichts dagegen, beim Lernen als Anfänger einen Debugger zu nutzen (eher im Gegenteil).
Ich fand den Debugger meist nervig... zumindest, als mich andere noch dazu zwingen konnten. Heute bevorzuge ich saubere Programmierung.
 
kali-hi schrieb:
Ich fand den Debugger meist nervig... zumindest, als mich andere noch dazu zwingen konnten. Heute bevorzuge ich saubere Programmierung.
Auch seltsame Aussage. Die einzige andere Alternative zum Debugger ist, die Values in den Log auszugeben. Und willst du behaupten, das ist generell besser?

Bei einfachen Sachen reicht Loggen auch locker, aber spätestens wenn man die Nadel im Heuhaufen suchen muss, viel Spaß. In Sachen Geschwindigkeit und Effizienz ist der Debugger einfach enorm nützlich.

Und das sage ich als jemand, der auch schon mal Assembler-Code über Kommandozeile gedebuggt hat, wo man die Werte der einzelnen CPU-Register sieht.
 
  • Gefällt mir
Reaktionen: Bob.Sponge und Piktogramm
Andarkan schrieb:
Und wir können das, was wir schreiben, nicht am Debugger testen, weil wir gar keine lokalen Jenkins-Instanzen laufen lassen können/dürfen.
Es löst bei mir ja immer Kopfschütteln aus, wenn interne Regeln derart restriktiv sind.

Ich habe zugegeben keine Erfahrung mit Jenkins, aber Remotedebugging scheint möglich zu sein. Ganz abgesehen vom fummligen Hack entsprechenden Code zu extrahieren, mit Boilerplate zu versehen und lokale laufen zu lassen. Naja oder etwas weiterentwickeltes printf-Debugging über das Debuglog.

Edit: Danke auf jeden Fall fürs Erweitern meines Blickfeldes. Buildpipelines hatte ich auf dem Schirm, das Debuggen dieser aber nicht.
 
Also im Grunde ist es fast egal, ob er Swing, AWT oder JavaFX oder SWT oder gar QT Jambi nimmt. Wichtig ist es, die Konzepte zu lernen. Auch Konzepte, wie man Code strukturiert, wie man Code wartbar und testbar macht. Aber Lernen ist ein progressiver, kontinuierlicher Vorgang, aber es baucht halt Zeit.
Und ja, wenn ich nichts davon beherrschen würde (ironischerweise beherrsche ich davon JavaFX sogar am wenigsten), dann würde ich heute wohl am ehesten JavaFX nehmen, weil wie jemand schon sagte, es von manchen Konzepten deutlich näher an anderen moderneren UI-Frameworks ist.

Interessant finde ich den Vorwurf, dass JavaFX nicht mehr zeitgemäß sei, gleichzeitig aber auf Swing verwiesen wird mit Beispielen, die laut Oracle auf JDK8 basieren...

Und zum Debuggen: Ich sage auch, dass Debugging keine Fähigkeit ist, auf die man stolz sein sollte oder worin man sich gezielt einarbeiten sollte. Aber: wenn man nach Fehlern sucht, dann ist es nun mal ein gehbarer Weg. Und ich verstehe nicht, was es den TE juckt, ob Leute auf dem Jenkins debuggen können oder nicht (habe das aber auch nur überflogen).

Warum man kein Experte im Debugging sein sollte: Naja, wenn man viel mit dem Debugger arbeiten muss, dann scheint man wohl Probleme zu haben, korrekten Code zu schreiben...

Um in diesem Fall das Verhalten der Anwendung zu prüfen, dafür braucht man aber kein tiefes Debugging-Wissen. Und wenn ich mal Unit-Tests reparieren muss, weil ein Kollege nicht darauf geachtet hat, dass sein Bugfix in jahrealtem Code eben diese bricht, und ich aus dem Urlaub komme und der Kollege weg ist, und auch sonst niemand im Team sich mit dem Test auskennt, dann bringt es mir wenig, wie gut mein Code ist. Warum das überhaupt mit kaputten Unit-Tests gemerged werden konnte, keine Ahnung mehr, war mir an der Stelle auch egal weil es nichts zur Lösung beigetragen hat. Und mittels Debugger und jemand, der sich ein wenig fachlich zu der Korrektur auskannte, konnten wir dann gemeinsam den Test fixen.

Und natürlich hätte ich auch 20 Konsolenausgaben machen können, aber wenn ich so wenig Ahnung habe, was da passiert, dann weiß ich ja nicht mal, was ich ausgeben soll.

Ansonsten finde ich Ausgaben bei Tests, die den Testablauf nachvollziehbar machen, auch gar nicht schlecht. Einerseits interessiert mich häufig der Zustand vor und nach einer Operation, und ja, man kann solche Ausgaben ja auch in Testergebnissen einer Build-Pipeline sehen. Ideal ist es ja, wenn man anhand des Testlaufs/-ergebnisses schon auf den Fehler schließen kann. Klingt banal, aber ich sehe in unserer Code-Basis auch Asserts wie assertTrue(list.contains(element));. Und ja, früher habe ich auch solche Asserts geschrieben. Noch schlimmer, auch schon gesehen assertTrue(actual.equals(expected));. Da freut man sich, wenn man im Testprokoll auf dem Jenkins siehst: "expected true, but was false".
Und ich verstehe leider, dass Tests oft schlechte Asserts haben, denn die Assserts schreiben die meisten Leute dann, wenn der Test erfolgreich durchläuft... ein schlechter Assert ist kein Problem für das Jetzt, sondern für die Zukunft...

Natürlich kann der TE in seinen Code an diverse Stellen den Zustand ausgeben. Aber selbst das mache ich meist erst dann, wenn ich mit dem Debugger nicht so leicht ans Ziel komme. Dass man hier mit dem Debugger nicht leicht ans Ziel kommt, das bezweifle ich aber sehr stark.
 
Ok, gehen wir mal rückwärts an die obige Wall of text heran:

tollertyp schrieb:
Dass man hier mit dem Debugger nicht leicht ans Ziel kommt, das bezweifle ich aber sehr stark.
Für diesen einen Fall mag das zutreffend sein ... aber generell ist Clean Code, wodurch der Einsatz des Debuggers meist obsolet wird, zu bevorzugen. ;)

Testabdeckung war hier noch nicht das Thema...

tollertyp schrieb:
Interessant finde ich den Vorwurf, dass JavaFX nicht mehr zeitgemäß sei, gleichzeitig aber auf Swing verwiesen wird mit Beispielen, die laut Oracle auf JDK8 basieren...
alt UNGLEICH schlecht !

Ok, meine Wortwahl war... suboptimal.
 
kali-hi schrieb:
So funktioniert es in der echten Welt aber nicht ... Du kannst dich nicht immer darauf verlassen, dass dir ein Debugger (oder auch ChatGpt) bei schlampiger Programmierung hilft.
Doch, genau so funktioniert das in der echten Welt.
 
Zurück
Oben