- Programação Extrema - Extreme Programming (XP): estude pela página www.extremeprogramming.org.
- Execução em iteração (como um miniprojeto), assim recebendo constante feedback para cada etapa do software em funcionamento.
- Entregue software: que seja necessário, no tempo e no orçamento.
- How to Design Programs: estude pelo ebook online HtDP2e;
- How to Code: Simple Data: estude pelo curso HtC1x; e
- How to Code: Complex Data: estude pelo curso HtC2x.
Aplique os padrões após três diferentes exemplos do mesmo problema no código.
-
Não se Repita - Don’t Repeat Yourself (DRY) / Write Every Time (WET): princípio sobre o problema da duplicação de conhecimento.
Cada parte do conhecimento deve ter uma representação única, não ambígua e definitiva dentro do sistema.
Evite código duplicado por abstrair as coisas que são comuns e colocando essas coisas em um único local.
Tenha cada peça de informação e comportamento em seu sistema em um único e sensível local.
-
Execute Around Method: controle sobre recursos externos, como operações em cleanup e locks.
-
Princípio de Hollywood - Hollywood Principle: Não nos chame, nós chamaremos você - Don't call us, we will call you, especifica como componentes de alto e baixo nível interagem sem criar dependências, sendo uma técnica para a construção de frameworks e componentes.
-
Ordene, não peça! - Tell, don't ask!: peça o produto da informação ao elemento de programação na qual é dono da informação - reduza os acoplamentos, priorizando o encapsulamento.
Técnicas para a refatoração: delegação e redirecionamento.
-
Princípio do Mínimo Conhecimento - Principle of Least Knowledge: também conhecido por Law of Demeter (1988) ou Don't Talk to Strangers, fale somente com seus amigos imediatos:
- O elemento em si;
- Os elementos passados como parâmetros para o elemento;
- Quaisquer elementos criados e/ou instanciados;
- Quaisquer componentes do elemento; e
- Os elementos globais.
-
Mantenha Simples, Estúpido - Keep It Simple, Stupid (KISS): em edição.
-
Você Não Vai Precisar Disso - You Aren't Gonna Need It (YAGNI): resista a urgência da necessidade no futuro, guiando o desenvolvimento através do TDD.
-
Herança - Inheritance: é o ato de um elemento de programação estender as responsabilidades de outro elemento de programação através da construção de um novo nível na hierarquia durante o tempo de compilação.
-
Encapsulamento - Encapsulation: é o processo de envolver elementos de programação em entidades maiores e mais abstratas, com o objetivo de proteger a informação (em meios controlados) de ser utilizada incorretamente, assim separando o tipo de sua classe, ou seja, os dados de seu comportamento ou também o que fazer de como fazer - outros nomes utilizados são Ocultamento de Informação (Information Hiding) ou Separação de Interesse (Separation of Concerns). Em projetos, o Encapsulamento refere-se a API, enquando o Ocultamento de Informação a sua implementação.
Separa o que varia do que permanece constante.
Protege os elementos de programação de desnecessárias mudanças.
-
Polimorfismo- Polymorphism: em edição.
-
Delegação - Delegation: é o ato de um elemento de programação encaminhar uma necessidade/responsabilidade para outro elemento de programação, para ser executado em função do primeiro.
Blinda seus elementos de programação de alterações nos outros elementos de programação.
É um exemplo extremo de composição.
-
Redirecionamento - Forwarding: em edição.
-
Composição - Composition: é o ato de um elemento de programação usar as funcionalidades/comportamentos de uma família de outros elementos de programação e modificar (por seleção) essas funcionalidades/comportamentos em tempo de execução.
-
Agregação - Aggregation: é o ato de um elemento de programação usar as funcionalidades/comportamentos de outros elementos de programação, mas sem controlar seu tempo de vida.
-
Associação - Acquaintance: em edição.