segue o código abaixo:
public class Board extends JPanel implements ActionListener {
private final int B_WIDTH = 300;
private final int B_HEIGHT = 300;
private final int DOT_SIZE = 10;
private final int ALL_DOTS = 900;
private final int RAND_POS = 29;
private final int DELAY = 140;
private final int x[] = new int[ALL_DOTS];
private final int y[] = new int[ALL_DOTS];
private int dots;
private int apple_x;
private int apple_y;
private boolean leftDirection = false;
private boolean rightDirection = true;
private boolean upDirection = false;
private boolean downDirection = false;
private boolean inGame = true;
private Timer timer;
private Image ball;
private Image apple;
private Image head;
....
}
por que alguns atributos são escritos com letras maiúsculas e outros com letras minusculas e usando o anderline para separar e ainda outros usando o padrão cammeCase?
É somente uma convenção de código Java, se todos seguem a mesma convenção, fica mais fácil de uma pessoa entender o código da outra.
Neste seu exemplo não está de acordo pois as letras maíúsculas separadas por sublinha são usadas para constantes estáticas e instâncias de enums.
No seu exemplo estão sendo declaradas constantes dinâmicas, isto é, não são estáticas, então deveriam começar com minúsculo e seguir o padrão cammelCase.
Analisando o código, correto seria usar constantes estáticas, assim:
private static final int B_WIDTH = 300;
private static final int B_HEIGHT = 300;
private static final int DOT_SIZE = 10;
private static final int ALL_DOTS = 900;
private static final int RAND_POS = 29;
private static final int DELAY = 140;
private final int x[] = new int[ALL_DOTS];
private final int y[] = new int[ALL_DOTS];
private int dots;
private int apple_x;
private int apple_y;
private boolean leftDirection = false;
private boolean rightDirection = true;
private boolean upDirection = false;
private boolean downDirection = false;
private boolean inGame = true;
private Timer timer;
private Image ball;
private Image apple;
private Image head;
2 curtidas