Final quando usado com variáveis em Java fornece um substituto para constante em C ++. Portanto, quando final e estático é usado para uma variável, torna-se imutável. Ao mesmo tempo, os programadores C ++ migrados ficam muito felizes ;-)
Quando usado com variáveis de referência, não permite que você refira a referência ao objeto, embora o objeto possa ser manipulado.
Quando final é usado com um método, ele não permite que o método seja substituído pelas subclasses.
Uma vez que o uso é muito claro, deve ser usado com cuidado. Depende principalmente do design, pois o uso final do método não ajudaria o polimorfismo.
Só se deve usá-lo para variáveis quando você tiver certeza absoluta de que o valor da variável nunca será alterado. Também verifique se você segue a convenção de codificação incentivada pelo SUN.for, por exemplo: final int COLOR_RED = 1; (Maiúsculas separadas por sublinhado)
Com uma variável de referência, use-a apenas quando precisarmos de uma referência imutável para um objeto específico.
Em relação à parte de legibilidade, verifique se os comentários desempenham um papel muito importante ao usar o modificador final.