I min presentation för JavaOne beskriver jag hur du kan skriva ett 3D spel på mindre än 50 minuter. Detta har gjort att vissa höjt lite på ögonbrynen och ställt sig tveksama till att det faktiskt går att skriva det så snabbt. Spelet som jag presenterar består av ungefär 1400 rader kod, varav ungefär 500 är automatgenererade getter/setters och dylikt. I princip så har jag alltså manuellt skrivit ungefär 900 rader Java-kod på mindre än 50 minuter. Det betyder 22,5 rader per minut. Jag räknar med i genomsnitt ungefär 40 tecken per rad, vilket då resulterar i att jag måste slå 720 slag på tangentbordet varje minut i 50 minuter för att hinna med alltihop. Jag läste på Wikipedia att den genomsnittlige datoranvändaren skriver mellan 50 och 70 ord per minut, där varje ord är i genomsnitt 5 tecken lång, d.v.s. 350 tecken per minut som mest (världsrekordet ligger på 150 ord-per-minut under 50 minuter, innehas av en Barbara Blackburn). Det är alltså en bra bit från de 720 tecken/minut som jag behöver uppnå. Så hur kan jag hävda att det är möjligt?
Beroende på hur man ser på det så fuskar jag. Jag använder själv IntelliJ IDEA (6.0 för närvarande) för all Java-kodning. Överlägset stöd för code-completion, refactoring, templates och annat trevlig godis för utvecklare. Ta följande exempel; jag ska skapa lägga till en ActionListener på en knapp. Jag har skrivit följande kod och markören står på *.
JButton button = new JButton(”Kör”);
button.addActionListener(*);
Sen långt tillbaka har vi haft grundläggande code-completion där jag skriver variabelns namn, punkt, och sen trycker Ctrl-Space (eller dylikt) och får upp en lista på alla metoder som kan köras på det objektet. IntelliJ tar det hela ett steg längre, nu skriver jag bara följande (i fetstil) och trycker på Ctrl-Shift-Space:
JButton button = new JButton(”Kör”);
button.addActionListener(new );
Resultatet nu är att IntelliJ fattar att det är en ActionListener som ska in där. Den presenterar en lista med alla klasser och interface som skulle passa där (alla klasser som implementerar ActionListener och som ligger i projektets classpath). Nu vill jag inte använda en färdig ActionListener, utan skapa ett anonymt inre objekt. Väljer jag då ActionListener av de alternativ som finns i listan så fixar IntelliJ all boiler-plate kod åt mig automatiskt, resultatet blir alltså, utan att jag behöver skriva ett tecken mer, att jag får följande helt automatiskt (markören hamnar på *):
JButton button = new JButton(”Kör”);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
*
}
});
Detta funkar för alla typer av anonyma inre klasser och även för sånt du skriver själv. Väldigt smidigt alltså. Denna intelligent code-completion fungerar på fler ställen. Definerar jag en variabel av typen Map så räcker det med att jag skriver variabelns namn, ett = tecken och new och IntelliJ ger mig en lista över alla klasser som implementerar Map. Väldigt trevligt.
Detta är bara ett litet smakprov av vad IntelliJ erbjuder dig som kodare. Trivilia saker som ofta kräver mycket manuellt skrivande görs i ett nafs. Refactoring-stödet är smått magiskt och har under de 6-7 år som jag använt IntelliJ väldigt sällan fallerat. Nu vet jag att både Eclipse och NetBeans erbjuder smart code-completion och refactoring, men ingen av dem är ens i närheten av de finesser som IntelliJ har.
Baksidan är att IntelliJ kostar pengar. $499 för att vara exakt. Väl investerade pengar enligt mig. För de som vill testa IntelliJ så kan du ladda hem en trial licens på 30 dagar. Du hittar allt på www.intellij.com.