Hallo Markus,
Ich denke, die Diskussion wirft aber eine wichtige Frage auf:
An wen richten sich unsere Tutorials? Haben wir eine Hauptzielgruppe? Chris hat eher Smalltalk-Entwickler im Sinn, die eine gute open-source Entwicklungsumgebung suchen, ich dachte eher an Kinder/Eltern/Lehrer oder "Omniuser" (was war da gleich die beste deutsche Übersetzung?)
Otto Normalbenutzer?! ;-) Ich hatte aber ganz deutlich den Eindruck, das Chris' Tutorial doch eher an den Smalltalk-Interessierten Benutzerkreis gerichtet ist (was völlig in Ordnung ist).
Schon, schon, aber die Frage ob #handlesMouseDown: einfacher ist als "on:send:to:" ist schwierig zu beantworten.
Das Tutorial für den E-Toy Button nebst Screenshots und Filmaufnahme ist mir wichtiger, als die Antwort auf die Frage, welche der Smalltalk-Lösungen tatsächlich einfacher ist oder nicht.
Das habe ich vermutet. Deswegen sagte ich auch man "kann" darüber streiten.
Zudem ist das Setup zentralisiert, was bedeutet das wenn jemand rausfinden möchte "was dieses Ding macht" kann er in die Initialisierung reinschauen und muss nicht wild durch die Klasse browsen.
Das Argument kommt mir schon vom Visitior-Pattern bekannt vor, ich mag es nicht so gern, weil wir ja sonst bei OO immer der Verteilung das Wort reden, bin wohl eher der wilde Typ :-)
Ich meinte mit dem "wilden Rumbrowsen" viel eher die Problematik, dass es schwer für einen Benutzer ist die "relevanten" Information zu finden. Typischerweise geht vieles bei der Benutzerinteraktion los, weswegen Interaktionsmethoden oft der kritische Einstiegspunkt für das Verständnis sind. Diese schnell finden zu können macht es deutlich einfacher, ein generelles Verständnis der Funktionsweise eines Objektes zu erhalten.
Wir sind uns einig, dass der E-Toy-Weg da der eleganteste ist.
Völlig.
Ich verstehe aber nicht, warum ich super rufen muss. Ich muss es dann rufen, wenn ich event-handling, wie Ihr es vorschlagt, benütze. Will ich ja nicht, alles was der Morph nach click tun soll, definiere ich in mouseDown: Oder was übersehe ich? YAGN.
Ja, Du übersiehst hier was und zwar "remote trigger". Zum Beispiel, wenn ich einen Morph mit #on:send:to: benütze und Du dann reingehst und das #mouseDown implementierst, dann geht mein Teil nicht mehr. Ohne, dass Du das notwendigerweise mitkriegst.
Folgendes Snippet zeigt, dass der Prozentsatz von "super-rufern" in 3.4 eher gering ist:
Genau einer der Gründe warum mir bei Morphic regelmäßig der verlängerte Rücken explodiert.
Wenn es denn falsch ist, bin ich zumindest nicht alleine... ;-) Ist das dann was für die MorphCleaningGroup?
Nicht solange kein vernünftiges Benutzermodell da ist. Eines der grundlegende Probleme hier ist, dass die Leute "mouseDown" sehen und dann sagen "aha, so macht man das" - also die Framework-Implementation mit der Framework-Benutzung verwechseln.
Ciao, - Andreas