Clase: Board
Método(s): move(), checkCollision(), locateApple(), initGame()
Descripción del problema: Las coordenadas de todos los segmentos de la serpiente y de la manzana se almacenan como dos arreglos de primitivos paralelos (int[] x e int[] y), en lugar de una abstracción de dominio como un objeto Point o Segment. Esto es la definición textual de Primitive Obsession: usar tipos primitivos donde un objeto pequeño sería más expresivo. Los arreglos deben mantenerse siempre sincronizados entre sí; si un método actualiza x[z] pero olvida y[z], la serpiente se corrompe silenciosamente. Además, calcular la posición de la manzana devuelve dos int sueltos (apple_x, apple_y) que no tienen relación de tipo con las coordenadas de la serpiente, aunque conceptualmente representan lo mismo.

Clase: Board
Método(s): move(), checkCollision(), locateApple(), initGame()
Descripción del problema: Las coordenadas de todos los segmentos de la serpiente y de la manzana se almacenan como dos arreglos de primitivos paralelos (int[] x e int[] y), en lugar de una abstracción de dominio como un objeto Point o Segment. Esto es la definición textual de Primitive Obsession: usar tipos primitivos donde un objeto pequeño sería más expresivo. Los arreglos deben mantenerse siempre sincronizados entre sí; si un método actualiza x[z] pero olvida y[z], la serpiente se corrompe silenciosamente. Además, calcular la posición de la manzana devuelve dos int sueltos (apple_x, apple_y) que no tienen relación de tipo con las coordenadas de la serpiente, aunque conceptualmente representan lo mismo.