Upgrade to Pro — share decks privately, control downloads, hide ads and more …

O que não precisei desaprender em POO

Rachel Curioso
November 27, 2020
330

O que não precisei desaprender em POO

Essa palestra fala um pouco sobre os princípios de SOLID, e como aproveitar em funcional.

Rachel Curioso

November 27, 2020
Tweet

Transcript

  1. Glossário Classe _ Conjunto de propriedades e funções. Representam um

    objeto; Subclasse _ Classe derivada de outra. Possui as mesmas propriedades e funções++; Herança _ Quando criamos uma subclasse a partir de uma classe. Subclasse A é uma herança da Classe B; Dependência _ Classes/libs/módulo que são chamadas em outra classe/módulo; Interface _ É o conjunto de funções públicas;
  2. Sinais Rigidez _ Mudanças só são permitidas se forem críticas.

    Temos medo de mudar o código; Fragilidade _ Qualquer pequeno fix quebra (muito) o código de formas imprevisíveis; Imobilidade _ Inabilidade de reutilização. É mais fácil fazer algo novo (e quase igual) do que reutilizar algo existente; Viscosidade _ Design » Gambiarras são mais fáceis do que fazer da forma correta; Environment » Deployar / testar / compilar é difícil e evitamos.
  3. Se precisamos usar um “e” ou “ou” na hora de

    explicar, provavelmente temos mais de uma responsabilidade
  4. _ Nosso código deveria ser reutilizável, cada função/módulo(/classe) deveria ser

    uma ferramenta; _ Código com mais de uma responsabilidade dificilmente é reutilizável; _ Se utilizarmos um código com muitas responsabilidades, uma alteração possui efeitos colaterais e fica frágil.
  5. _ Podemos ter código com muitas responsabilidades em funcional também;

    _ Sejam módulos, funções (e até contextos).
  6. Sempre que esbarrarmos em código com muita responsabilidade, devemos dividir

    *Inclusive essa é uma ótima forma de começar uma refatoração.
  7. _ Também corremos o risco de quebrar tudo se modificarmos

    código existente; _ Precisamos escrever código passível de extensão (mas com parcimônia).
  8. _ Toda vez que for usado a função em comum,

    é preciso fazer um typecheck; _ Nosso código fica cheio de if pois o comportamento dele é meio imprevisível (= fragilidade).
  9. Esse problema em FP é menos comum que em OO,

    mas pode acontecer quando usamos protocolos. Precisamos nos atentar aos contratos
  10. Isso não significa que vamos fazer muitas micro classes *

    Mas precisamos saber a hora de refatorar.
  11. _ Podemos usar uma classe que possui métodos e atributos

    que não fazem sentido pra nós; _ No final estamos lidando com classe com muita responsabilidade; _ Tantas outras classes dependem dela que mudanças vão ficando difíceis.
  12. _ Classes concretas têm mais risco de sofrerem modificações; _

    Quando dependemos de classes voláteis, temos mais chance de quebrar o código, pois uma classe volátil possui mais chances de sofrer modificação; _ Uma modificação em classes com muitos dependentes pode causar problemas em efeito cascata.
  13. _ Independente do paradigma, patterns e princípios servem para tornar

    nosso código melhor; _ Todos nós queremos ter um código mais fácil de manter; _ Ter vindo de um background de POO me tornou uma programadora FP melhor.