Using an OOP language involving multiple objects, design a Snake game that allows users to control the movement of a snake on a screen, to get points for eating food and avoiding running into the walls or the growing tail of the snake itself. In developing the game ensure you use the best software development practice. Finally, implement, test and debug the game.