Por que escrever alguns atributos java maiúsculo?

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