Skip to content

Latest commit

 

History

History
122 lines (88 loc) · 5.2 KB

novice.md

File metadata and controls

122 lines (88 loc) · 5.2 KB

NOVATO

Práticas

XP

  • 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.

SPD

  • 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.

Regra dos três

Aplique os padrões após três diferentes exemplos do mesmo problema no código.

Princípios

Gerais

  • 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:

    1. O elemento em si;
    2. Os elementos passados como parâmetros para o elemento;
    3. Quaisquer elementos criados e/ou instanciados;
    4. Quaisquer componentes do elemento; e
    5. 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.

Conceitos

  • 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.