Código Limpo: Objetos e Estruturas de Dados cap6
Click here to load reader
-
Upload
inael-rodrigues -
Category
Documents
-
view
272 -
download
0
Transcript of Código Limpo: Objetos e Estruturas de Dados cap6
Código Limpo Capitulo 6
Objetos e Estrutura de DadosObjetos e Bruno Maia
Carlos AlbertoJosé Leonardo
Maxwel Otsuka
Abstração de Dados● 6-2: Os métodos exigem regra de acesso● 6-1: Obriga a ser manipulada independentemente
Abstração de Dados● Manipulação independente expõe as variáveis● Estaria exposta mesmo com métodos de leitura e
escrita● Ocultar a implementação significa inserir
métodos para chamadas de variáveis● Deve-se expor interfaces abstratas que não
demonstrem a implementação.
Anti-simetria data/objeto● Objetos usam abstrações para esconder seus
dados e expõe as funçoes que operam seus dados.● Estruturas de dados expõe seus dados.● O código procedural facilita a adição de novas
funções sem precisar alterar TAD existentes● Código OO facilita a adição de novas classes sem
alterar funções existentes
A Lei de DemeterA Lei de Demeter é uma heurística que diz: "um módulo não deve enxergar o interior dos objetos que ele manipula". Ou seja, um método f de uma classe C só deve chamar os métodos de:● C;● Um objeto criado por f;● Objeto passado como parâmetro para f;● Um objeto dentro de uma instância da variável f;
"Fale apenas com conhecidos, não com estranhos".
Carrinhos de Trem● final String outputDir = ctxt.getOptions().getScratchDir().
getAbsolutePath();
● Esse tipo de código tem esse nome pois se parece com com um monte de carrinhos de trem acoplados. Esse tipo de cadeias de chamadas são consideradas descuidadas e devem ser evitadas. Na maioria das vezes é melhor dividi-las assim:
■ Options opts = ctxt.getOptions();■ File scratchDir = opts.getScratchDir();■ final String outputDir = scratchDir.getAbsolutePath();
Híbridos● São estruturas metade objetos metade estrutura de
dados. Elas tornam públicas as variáveis privadas, incitando outras funções externas a usarem tais variáveis de forma como um programa procedimental usaria uma estrutura de dados.
● Eles dificultam tanto a adição de novas funções como de novas estruturas de dados.
● Evite cria-los.
Estruturas Ocultas● Cria o arquivo de rascunho de um determinado
nome (obtido através do caminho absoluto do diretório de rascunho)
● A estrutura interna é escondida, evitando que funções violem a Lei de Demeter ao navegar por objetos "alheios" (que não deveria enxergar)
Objetos de Transferência de Dados
● Os Objetos de Transferência de dados são estruturas muito úteis, especialmente para se comunicar com banco de dados ou analisar sintaticamente mensagens provenientes de sockets e assim por diante.
● Eles costumam se tornar os primeiros numa série de estágios de tradução que convertem dados brutos de um banco de dados no código do aplicativo.
O Active Record● Os Actives Records são formas especiais de
Objetos de Transferência de Dados.
● Eles são estruturas de dados com variáveis públicas , mas eles tipicamente possuem métodos de navegação como save(), find(), insert() ...
● Esses Actives Records são traduções diretas das tabelas de banco de dados ou de outras fontes de dados
FIM