Classes e Interfaces – Item 17

Postado em Atualizado em

Projete e documente classes para herança ou iniba herança

Uma vez que o override de método fura as regras de encapsulamento, o autor de uma classe tem a obrigação de documentar em cada método público, protegido ou construtor se existe alguma chamada de possíveis métodos overrides, quais as suas consequências e qual o resultado de cada invocação.

Para evitar essa situação de comportamentos inesperados e até exceptions de runtime, não faça chamadas de métodos possíveis de overrides em construtores, uma vez que eles executarão o método da classe filha sobreposto quando for anulado. De outro lado, a melhor solução para evitar os possíveis problemas de furo de encapsulamento por override é proibir totalmente a herança em classes que não foram projetadas e ou documentadas para serem seguramente usadas como superclasses.  Para inibir a herança, declare a classe como final ou declare o construtor como privado, adicionando métodos estáticos de fabricas para geração de objetos.

Para uma classe ser totalmente segura para herança ela não pode ter chamadas internas para possíveis métodos overrides. Dessa forma qualquer possível ocorrência de override não alterara os comportamentos das chamadas de métodos. Uma forma de eliminar chamadas de métodos overrides é criando métodos privados helpers que encapsulem a lógica antes existente nos métodos abertos para override, fazendo a chamada para eles.

Para todas as informações, veja o post inicial.

“O que o justo almeja redunda em alegria,mas as esperanças dos ímpios dão em nada.” Provérbios 10:28

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s