Do you speak Java?

wtorek, 10 marca 2009

Blogi, groovy, java i String

Od jakiegoś czasu rozpoznaje webowe dziecko Grooviego czyli Grails. Jest to świetny framework do małych aplikacyjek, którego polecam wszystkim.

Aby dowiedzieć się czegoś ciekawego o Grailsach wszedłem odwiedziłem również bloga Radka Holewy - jednego z liderów PLJUGa. Tam znalazłem bardzo ciekawy wpis "Groovy - przydatne informacje" który zawiera zestaw "sznurków" przydatnych dla każdego zainteresowanego językiem groovy. jednym z linków był Grails Tutorials, a stamtąd już prosto na bloga 3.times { theFun } i post Syntactic Sugar. Opisana jest w nim uproszczona składnia pętli for w groovim, lecz to co co przyciągnęło moja uwagę to komentarz autora o "syntactic sugar" w Javie. A konkretnie o klasie String tworzeniu jej obiektów.


In Java we can create a String through the object model by calling a constructor:

String name = new String ("eduardo");

Or we can use this bit of "syntactic sugar":

String name = "eduardo";

As you can see, syntactic sugar gives us two things: clarity and conciseness. It does not add any new functionality

Czemu mnie ten fragment zaciekawił? Powód jest prosty... autor dość znacznie mija się z prawdą. Różnica pomiedzy new String("tekst") oraz "tekst" jest dość duża. Ta pierwsza konstrukcja ZAWSZE tworzy nowego string, a ta druga najpierw wyszukuje czy już taki łańcuch istnieje w puli, jeśli tak to podpina się pod niego, a jeśli nie to tworzy nowy i wrzuca go do puli. Można by więc powiedzieć, że niejawnie wywołuje metodę intern(). Z tych powodów jawnego konstruktora klasy String NIGDY nie powinno sie uzywać. Jak widać nie jest to więc tylko syntactic sugar i jak najbardziej dodaje nową funkcjonalność.

Opisałem więc cała sprawę w komentarzy do posta, jednakże gdy kliknąłem "Post Comment" okazało się, że musi być on zaakceptowany przez bloggera. Niestety nie wszyscy potrafią przyjąć krytykę więc mój komentarz się nie pojawił, natomiast post stał się bogatszy o jedno słowo.

I tak zdanie

"It does not add any new functionality"

zostało zmienione na

"It USUALY does not add any new functionality"


Powiem szczerze, że przykra jest dla mnie taka cenzura na blogach... no ale jak to mawiał Ryszard Ochódzki "trudno... co zrobić"

1 komentarz:

a pisze...

Pomimo wszystko wpłynąłeś na wartość treści tam przedstawianych, a że niektórzy nie lubią krytyki żadnej - ha, mnie też to zastanawia, bo przyznanie się do błędu to taka piękna cecha i tak ułatwia zaakceptowanie samego siebie i innych :)

Tomasz Bartczak
Racjonalny Developer