String.format
Ik gebruik Java 5 nu al bijna een jaar. De meeste dingen raak ik nu wel aan gewent. Zoals die vervelende generics notatie welke je code soms zo opblaast dat het niet meer leesbaar is, en verschillen tussen toegestane generics constructies tussen de Eclipse compiler en de Sun compiler. Hierover klagen vind ik niet zo productief aangezien de notatie helemaal het gevolg is van de gekozen generics aanpak en die compilers moeten gewoon nog even wennen. Maar een ding zit ik me echt totaal onnodig bijna dagelijks aan te ergeren: de String.format method. Op zich is de functionaliteit erg fijn; het voorkomt een hoop string concatenatie met plusjes, veel dubbele quootjes en code om waarden te formatteren. Echter de method is static gemaakt en dat terwijl het eerste argument altijd een String is! Vergelijk:
System.out("%d-%d %.2f%".format(1, 2, 3.4)); System.out(String.format("%d-%d %.2f%", 1, 2, 3.4));
Is die eerste niet veel handiger dan de suffe en procedurele static aanroep? Elke keer als ik aan een format string begin, moet ik mijn cursor weer terug plaatsen en er String.format voor zetten.
Nu maar hopen dat Java 6 verbetering brengt.



Wat dacht je van een static import??
[java]
import static java.lang.String.format;
public class MyFormattingTest {
public static void main(String… args) {
System.out.print(format(”asdf %d”,1));
}
}
[/java]
peter maas - juli 24, 2006 21:21
Het gaat er mij vooral om dat je extra moet typen. Die static import maakt de situatie dus alleen maar erger.
Erik van Oosten - augustus 7, 2006 15:35
Euhm, maar die static import zorgt er toch juist voor dat je minder hoeft te typen? Ik geef toe dat mijn voorbeeld dat inderdaad niet weergeeft, je moet het dan wel wat meer gebruiken in de betreffende file
peter maas - augustus 19, 2006 0:19
Laten we karakters gaan tellen
[java]import static java.lang.String.format;
System.out(format(”%d-%d %.2f%”, 1, 2, 3.4));[/java]
vs.
[java]System.out(String.format(”%d-%d %.2f%”, 1, 2, 3.4));[/java]
Ik tel 84 vs. 53 karakters. De static import heeft het dus 31 karakters erger gemaakt. Pas bij 5 keer format gebruiken in een java file geeft de static import minder type werk.
Erik van Oosten - augustus 28, 2006 8:21
Ok ok, du hast recht
peter maas - augustus 28, 2006 9:21
Sun heeft er al over nagedacht: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5072887
Erik van Oosten - augustus 29, 2006 8:51