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;
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.
_ 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.
_ 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).
_ 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.
_ 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.
_ 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.