ConstructiCat Logo
CodeBust.
Browse section ▾

Organizing Data.

Antipatterns Mascot
Mudar Associação Bidirecional para Unidirecional

Problema: Você tem uma associação bidirecional entre classes, mas uma das classes não usa os recursos da outra. Solução: Remova a associação não utilizada.

001
Antipatterns Mascot
Mudar Referência para Valor

Problema: Você tem um objeto de referência pequeno demais e alterado com pouca frequência para justificar o gerenciamento de seu ciclo de vida. Solução: Transforme-o em um objeto de valor.

002
Design Patterns Mascot
Mudar Associação Unidirecional para Bidirecional

Problema: Você tem duas classes que precisam, cada uma, usar os recursos da outra, mas a associação entre elas é apenas unidirecional. Solução: Adicione a associação que falta à classe que precisa dela.

003
Antipatterns Mascot
Mudar Valor para Referência

Problema: Você tem muitas instâncias idênticas de uma mesma classe que precisa substituir por um único objeto. Solução: Converta os objetos idênticos em um único objeto de referência.

004
Antipatterns Mascot
Duplicar Dados Observados

Problema: Os dados de domínio estão armazenados em classes responsáveis pela GUI? Solução: Então é uma boa ideia separar os dados em classes próprias, garantindo a conexão e a sincronização entre a classe de domínio e a GUI.

005
Refactoring Mascot
Encapsular Coleção

Problema: Uma classe contém um campo de coleção e um getter e setter simples para trabalhar com a coleção. Solução: Torne o valor retornado pelo getter somente leitura e crie métodos para adicionar/remover elementos da coleção.

006
Refactoring Mascot
Encapsular Campo

Problema: Você tem um campo público. Solução: Torne o campo privado e crie métodos de acesso para ele.

007
Refactoring Mascot
Substituir Array por Objeto

Problema: Você tem um array que contém vários tipos de dados. Solução: Substitua o array por um objeto que terá campos separados para cada elemento.

008
Refactoring Mascot
Substituir Valor de Dado por Objeto

Problema: uma classe (ou grupo de classes) contém um campo de dados. O campo tem seu próprio comportamento e dados associados. Solução: crie uma nova classe, coloque o campo antigo e seu comportamento na classe e armazene o objeto dessa classe na classe original.

009
Design Patterns Mascot
Substituir Número Mágico por Constante Simbólica

Problema: seu código usa um número que tem um certo significado. Solução: substitua esse número por uma constante com um nome legível por humanos que explique o significado do número.

010
Architectural Patterns Mascot
Substituir Subclasse por Campos

Problema: Você tem subclasses que diferem apenas em seus métodos (que retornam constantes). Solução: Substitua os métodos por campos na classe pai e exclua as subclasses.

011
Architectural Patterns Mascot
Substituir Código de Tipo por Classe

Problema: Uma classe tem um campo que contém um código de tipo. Os valores desse tipo não são usados em condições de operadores e não afetam o comportamento do programa. Solução: Crie uma nova classe e use seus objetos no lugar dos valores do código de tipo.

012
Design Patterns Mascot
Substituir Código de Tipo por Estado/Estratégia

Problema: Você tem um tipo codificado que afeta o comportamento, mas não pode usar subclasses para se livrar dele. Solução: Substitua o código de tipo por um objeto de estado. Se for necessário substituir o valor de um campo por código de tipo, outro objeto de estado é “plugado”.

013
Architectural Patterns Mascot
Substituir Código de Tipo por Subclasses

Problema: Você tem um tipo codificado que afeta diretamente o comportamento do programa (os valores desse campo disparam diversos trechos de código em condicionais). Solução: Crie subclasses para cada valor do tipo codificado. Em seguida, extraia os comportamentos relevantes da classe original para essas subclasses. Substitua o código de controle de fluxo por polimorfismo.

014
Architectural Patterns Mascot
Autoencapsular Campo

Problema: Você usa acesso direto a campos privados dentro de uma classe. Solução: Crie um getter e um setter para o campo e use apenas eles para acessar o campo.

015