r1 - 01 Jun 2006 - 20:09:37 - MeLgaYou are here: TWiki >  Doo Web  > TiraDuvidas > PrincipiosDeProjetoSegundoBruceEckel

Princípios de Projeto

  • Princípio do Menor Espanto - não cause espanto.

  • Faça com que as coisas comuns sejam fáceis, e as coisas raras possíveis.

  • Não fale com estranhos (Lei de Demétrio) : um objeto deveria referenciar somente a si mesmo, seus atributos, e os argumentos de seus métodos.

  • Princípio da Subtração: um projeto está terminado quando você não conseguir remover mais nada dele.

  • Simplicidade antes da generalidade (Uma variação da lei de OCCAM ("a solução mais simples é a melhor"). Um problema comum que encontramos em frameworks é que eles são projetados para um propósito geral sem referencia a sistemas reais. Isso leva a um conjunto estonteante de opções que muitas vezes não são utilizadas, ou são mal utilizadas ou são mesmo sem utilidade. Mas os desenvolvedores trabalham em sistemas específicos, e a busca por generalidade nem sempre lhes cai bem. O melhor caminho para a generalidade é através do entendimento de exemplos específicos. Assim, este princípio age como desempatador entre alternativas de projeto que seriam, de outra forma, igualmente viáveis. Claro, é inteiramente possível que a solução mais simples seja também a mais geral.

  • Reflexividade. Uma abstração por classe, uma classe por abstração. Poderia ser tambem chamada de Isomorfismo.

  • Independencia ou Ortogonalidade. Expresse idéias independentes de forma independente. Isso complementa a Separação o Encapsulamento e a Variação, e é parte da mensagem Baixo_Acoplamento-Alta_Coesão

  • Uma vez, e somente uma: evite duplicação de lógica e estrutura onde a duplicação não for acidental, i.é.: quando ambos os trechos de código expressam o mesmo intento pelo mesmo motivo

Bruce Eckel

http://jamesthornton.com/eckel/TIPatterns/html/Chapter01.html#Heading11

Separação-Encapsulamento-Variação

  • Separação de Preocupações (Responsabilidades) - Decomponha sistemas em subsistemas, classes e hierarquias de classes.

  • Encapsulamento&Proteção - Guardando os dados de forma privada, a classe isola seus clientes da variação de seus detalhes de implementação.

  • Variação de comportamento Deixe o sistema de execução determinar o tipo dinâmico do objeto. O comportamento pode mudar em tempo de execução. Use Polimorfismo (acoplamento dinamico, tardio)

___________________________________________ Lista XP XP@listas.hipernet.ufsc.br http://XP.edugraf.ufsc.br

Edit | WYSIWYG | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r1 | More topic actions
 
Powered by TWiki
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback