Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

Refactoring er enkelt sagt "ordning av kode". Dette innebærer å endre den interne virkemåten for en metode, klasse eller et helt prosjekt uten å endre oppførselen til koden. Det finnes flere grunner for å refactore, men et par vanlige eksempler er (1) man ønsker å gjøre koden lettere å lese eller (2) at man ønsker å forbedre ytelsen.

Generell refactoring av kode

Et (overdrevet) dårlig eksempel kan ses nedenfor til venstre. Her er det først og fremst formateringen (innrykk og parenteser) og dårlig navngiving som står frem. Selv om personen som har skrevet koden vet at den fungerer vil det bli dårlig stemning dersom noen andre skal ta over, og forstå hva som skjer! Kodeblokken til høyre er derfor bedre, selv om de gjør akkurat det samme.

Code Block
themeEclipse
languagejava
public static int bar(int[] asd) {
int foo = 0;	
for (int i = 0; i < asd.length; i++) {
if (asd[i] > asd[foo]) {foo = i;}
}
return asd[foo]; 
}
Code Block
themeEclipse
languagejava
// Metode som finner det største tallet i en liste med heltall
public static int getMax(int[] list) {

 
	// Før vi starter er det største tallet vi har funnet
	// det første tallet i listen
	int maxFound = list[0];
	
	// Bla gjennom listen...
	for (int i = 1; i < list.length; i++) {
		
		// ... dersom elementet på plass i er større enn det
		// største så langt, ta vare på det til senere 
		if (list[i] > maxFound) {
			maxFound = list[i];
		}
	}
	
	// Returner det største tallet vi fant
	return maxFound;
}

I koden til høyre er det flere elementer som gjør den "bedre":

  • Det er brukt fornuftige navn på metoder og variabler
  • Koden er pent formatert med innrykk
  • Kommentarer i koden forteller hva som skjer
  • Man er konsekvent med plassering av { og }
  • I blokken til venstre tar man vare på indeksen til det største elementet, og returnerer så elementet i lista på den plasseringen. Dette kan løses bedre ved å ta vare på det største tallet direkte, og så returnere dette.

Refactoring i Eclipse

Eclipse har innebygd støtte for å hjelpe deg med mange av mekanismene over. I tillegg finnes det langt mer avanserte funksjoner som du kan få bruk for i et større program. Ved å høyreklikke på ulike elementer vil du få opp en meny, der du kan velge "Refactor". Hvilke valg som dukker opp på denne menyen vil være avhengig av hva du trykker på. Prøv et prosjekt eller en klasse i Explorer-vinduet, og se hvordan det varierer. Du kan også velge et metodenavn, felt eller variabel i editoren. Dette gir igjen ulike valg.

Det å endre navn på et element er en av de nyttigste funksjonene. Dersom du endrer navnet på en metode ved hjelp av refactoring vil Eclipse endre alle referanser i hele prosjektet du arbeider i. 

En annen god funksjon som kan brukes i dette faget er å flytte elementer. Du kan flytte en metode til en annen klasse, eller flytte en klasse mellom pakker. Velg "Refactor" -> "Move" og bruk pop-up vinduet til å flytte elementet dit du vil ha det. 

Videre lesing

På hjemmesidene til Eclipse finner du mer om refactoring.