quarta-feira, 1 de abril de 2009

KISS ( keep it simple s... )

Atualmente estou lendo a segunda versao do Effective Java do Josh Bloch e ao passar por algumas partes, relembro alguns conceitos básicos de Java e OO que acabam passando despercebidos aos que estao começando a estudar a linguagem e mesmo a programadores experientes, seja por distração ou por desconhecimento.

Um exemplo simples são os modificadores de visibilidade e o encapsulamento. Quando se define uma classe que não é nested (interna), os dois únicos modificadores possíveis de serem utilizados são o public e o default, chamado de package private pelo Josh Bloch. O default (sem modificador) define a visibilidade somente no pacote onde a classe está definida. Por que isso é importante? bom...pra inicio de conversa, 90% dos exemplos em java que vemos por ai comecam com public class NomeDaClasse, inclusive os exemplos que passo aos meus alunos de java. O encapsulamento define que somente o que é essencial deve ser exposto ao resto do mundo e, portanto, antes de sair por ai colocando public em tudo que é classe, deve-se ter o bom senso de analisar se essa classe será utilizada fora do pacote.

Se a classe for utilizada, coloque public sem medo, somente tome cuidado com o acesso a membros. Se a classe for utilizada somente no pacote, tire aquele public dai imediatamente.

Por vezes voce acaba criando um FACADE para expor a funcionalidade e nesse caso, fica ainda mais visível a utilização desnecessária do public como modificador na classe.

O puxão de orelha serve para mim também, visto que meus exemplos de aula também, em sua maioria, começam com public class...

Outro aspecto importante é a utilização de Herança. Esta é bem mais simples...sua classe foi criada pensando na herança? Se sim, implemente-a como tal, se nao, simplesmente marque-a como final (ou sealed...). Se ela não foi criada para essa finalidade, impeça-a.

Voce se torna refém de tudo que expoe ao mundo externo e para fins de compatibilidade, acabará tendo que manter esse codigo.

Pra resumir a conversa...
1) cuidado com a utilização correta do encapsulamento;
2) leia o Effective Java, o livro é indispensável aos programadores java;
3) vou alterar meus exemplos de sala de aula;

0 comentários: