Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Satt sammen for vi kode som ser slik ut.:

Code Block
class Grid {
	private ArrayList<Integer> grid = new ArrayList<Integer>();
	private int x_max;
	private int y_max;

	public Grid(int x_max, int y_max){
		this.x_max = x_max;
		this.y_max = y_max;

		for(int i = 0; i < (x_max * y_max); i++){
			grid.add(null);
		}
	}

	public int getCell(int x, int y){
		int index = calcIndex(x, y);
		return grid.get(index);
	}

	public void setCell(int x, int y, int value){
		int index = calcIndex(x, y);
		return grid.set(index);
	}

	private calcIndex(int x, int y){
		return y*x_max + x;
	}
}

Dette er en start, men tar med kun det mest vesentlige, og koden har mangler. Her er forslag til hvordan man kan forbedre koden hvis man tar den i bruk:

  • Bedre feilhåndtering:Siden vi ikke gjør en sjekk om x og y er innenfor gyldig område, vil det skje to uting:
    1. Det vil være mulig (ved et uhell) å komme seg ned til en lavere rad hvis x settes større enn max_x.
    2. Siden vi gjør omregning til et internt format, vil IndexOutOfBoundsException som kastes av ArrayList vise til index-verdien vi får fra calcIndex.
    Dette forbedres ved å kaste en egen IndexOutOfBoundsException når det gir mening.
  • Javadocs:Dokumentasjon: Hvis man putter javadocs på klasser og metoder, blir det lett for deg selv og andre å slå opp bruken av denne klassen. Da holder det i elipse å flytte musepekeren over en refereansen til koden for få oversikt.
  • Andre typer enn int: Generics Koden over en begrenset til å bare kunne lagre int-er. Hvis man bruker generics, er det mulig å gjøre klassen helt generell i hendhold til hvilken type verdier som lagres.