Mittwoch, 31. August 2011

Quo Vadis UI

noch nie war es so wichtig, wie heute, ein User-Interface anzubieten, das von den meisten Benutzern intuitiv zu bedienen ist. In einer Zeit, in denen internetfähige Computer in fast jedem Haushalt zu finden sind, ergibt sich mit "den meisten" eine ganz andere Zielgruppe, als vor zehn oder zwanzig Jahren. Heute soll jeder mit dem technischen Gerät zurecht kommen, ganz gleich ob mit oder gänzlich ohne Computerkenntnisse. Das führt zu schicken und gut bedienbaren Oberflächen, die so weit wie möglich vom technischen Level abstrahiert werden. Ganz gleich ob Unity, Gnome3 oder OSX, Ahnung sollte man am besten nicht haben, das verwirrt nur. So manche Umgestaltung ist nämlich nur mit Unvoreingenommenheit und nicht mit technisch strukturiertem Denken oder entsprechender Erfahrung nutzbar. Schade, bietet doch die nähe zur Technologie auch immer eine gewisse Effizienz. Ich bin ehrlich gespannt, wo der Weg hingeht und welche Kehrtwendungen noch vonnöten sind. Das derzeitige Angebot moderner UI erscheint mir viel mehr für den Übergang zu etwas anderem geschaffen, als der Weisheit letzter Schluss.

Freitag, 19. August 2011

HTML5 let's start die Zweite

Ein paar Linktips zu HTML5 habe ich ja vor einiger Zeit schon mal verbloggt. Interessant ist auch das H5BP-Projekt (HTML5 Boilerplate), das kürzlich die Version 2 erreicht hat. H5BP eignet sich als Vorlage für neue Projekte. Es ist nahezu alles enthalten, was man so standardmäßig braucht. Da wären zum Beispiel Styles, die ein einheitliches Browserverhalten erzielen oder das jQuery minified, aber auch noch vieles mehr. Für den Projektstart auf jeden Fall einen Blick wert.

H5BP-Projekt

Montag, 15. August 2011

MiG Layoutmanager für SWT/Swing/JavaFX

Ich kannte ihn noch nicht, scheint aber wohl total Toll zu sein, was die Lesbarkeit und Handhabung anbelangt. Muss ich mir mal merken, für den Fall, dass ich mal wieder eine UI basteln muss.

MigLayout - Java Layout Manager

Mittwoch, 3. August 2011

Hello World Ausgabe beim Compilieren

Das coolste Hello World Beispiel ist mir heute untergekommen, funktioniert aber nur in der Windows-Console.

Zuerst mit einem Texteditor eine Datei anlegen und die folgende innere Klasse einfügen:
class Con {
    String hi = "Hello World";
}
Anschließend das ganze auf der Console compilieren.



Für die Ausgabe ist ein MS-DOS Relikt zuständig, das alle Dateien, deren Name mit CON beginnen, anstelle ins Dateisystem, auf die Console schreibt.

via Vanilla Java

Dienstag, 2. August 2011

Methoden verständlich anlegen

Nicht selten benötigt eine Methode mehrere Parameter, um ihre Aufgabe zu verrichten. Gerade bei Ergänzungen, für die eine Methode nur geringfügig anders ablaufen soll, neigen viele dazu, einfach ein Boolean- oder Integer-Flag anzuhängen. Das verhindert unnötig redundanten Code, vermindert aber die Lesbarkeit. Das ist bei der Methodensignatur noch nicht weiter wild. Deklarations-Beispiel:
void doSomething(Document doc, String name, String value, boolean ignoreCase) wird aber beim Aufruf interessant, da bei den Flag-Parametern häufig keine Variable auf seiten des Aufrufers verwendet wird. Aufruf-Beispiel: doSomething(doc, name, value, true). Kommen solche Konstruktionen zustande, ist im Aufruf nicht erkennbar, wofür das Parameter steht. Besonders schlimm wird es, wenn sich solche Parameter häufen.

Als Lösung würde es sich anbieten, für den Aufruf zuvor eine Variable mit passendem Namen zu deklarieren, so dass der Aufrufparameter erkennbar wird. Aufruf-Beispiel: doSomething(doc, name, value, ignoreCase). Die Lesbarkeit wird damit verbessert, jedoch eine eigentlich nicht benötigte Variable deklariert, die ausschließlich durch den Methodenaufruf Verwendung findet.

Am ehesten würde aber vermutlich die Deklaration von Konstanten sinn machen, um die Lesbarkeit zu verbessern. So könnten für das Beispiel die Konstanten DO_IGNORE_CASE und DO_NOT_IGNORE_CASE mit dem jeweiligen boolean deklariert werden, so dass der Aufruf letztlich so aussieht: doSomething(doc, name, value, DO_IGNORE_CASE).

Am meisten hat es sich bewährt, anstelle eines weiteren Parameter, eine neue Methode anzulegen, die den Flag-Parameter im Namen trägt. Deklarations-Beispiel: void doSomethingIgnoreCase(Document doc, String name, String value). Damit werden unnötige Schnörkel, wie Variablen-Deklarationen vermieden und sowohl Lese- als auch Schreibfluss gefördert. Es ist nämlich auch beim schreiben angenehmer die passende Methode auszusuchen, anstelle mit den Flag-Parametern zu hadern. Leider ist diese Möglichkeit nicht in jedem Fall praktikabel oder Möglich. Dann würde ich am ehesten die Konstanten-Schreibweise bevorzugen.