DESIGN PATTERNS. Como evitar problemas no futuro

Documentos relacionados
Minerando dados com o Facebook. Zalba Monteiro

Mas o que é mesmo Padrão de Projeto?

Introdução aos Padrões de Projeto. Sylvio Barbon Jr

Padrões de Projeto de Software

Creational Patterns Factory method

" ##$#$!% # & #$#$ !!!!"!

Engenharia de Software

PADRÕES DE PROJETO: DESIGN PATTERNS

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

Frameworks. Viviane Torres da Silva

INF011 Padrões de Projeto Introdução

Factory Pattern. SISMO - Sistemas e Mobilidade Junho de Departamento de Informática / UFMA

Padrões de Projeto de Software

Universidade Federal de Uberlândia Faculdade de Computação Prof. Fabiano Dorça. Introdução. Padrões de projeto

Abstract Factory. Prover uma interface para criar uma família de objetos relacionados ou dependentes sem especificar suas classes concretas

Abstract Factory. Edeyson Andrade Gomes

Padrões GoF Strategy, Observer, Singleton, Abstract Factory e outros...

Arquitetura de Software

b) Adapter, Bridge e Composite. c) Builder, Prototype e Singleton. d) Façade, Command e Decorator. e) Factory Method, Interpreter e Template Method.

Padrões de Projeto de Software

Padrões de Projeto de Software

Problema: Problema: FRAMEWORK. Problema: Motivação. O que é um framework

Padrões contexto problema solução

UNIVERSIDADE FEDERAL DO PARANÁ - UFPR Bacharelado em Ciência da Computação

Protótipo de uma ferramenta de apoio para desenvolvimento de sistemas web para WebIntegrator

Padrões de Projeto de Software

ENGENHARIA DE SOFTWARE

Facetas da Reusabilidade de Software

Análise. Orientada a Objetos Modelo Funcional, Modelo Estrutural e Modelo Comportamental. Linguagens: Java, C++, etc.

Marcela Mariotti Peres Arquitetura em três camadas Parte 1 [conceito]

Programação Orientada a Objetos Relacionamentos entre classes

Figura 1. Estrutura do agente de software.

Projeto de software Estrutura do software e arquitetura SWEBOK

Arquitectura de Sistemas de Software

Soluções reutilizáveis para situações ou problemas encontrados comumente em desenvolvimento de software orientado a objetos.

Curso - Padrões de Projeto Módulo 2: Padrões de Criação

Padrões Fábrica. Simple Factory Factory Method

Dicas & truques é uma iniciativa InnoDev com o foco na divulgação e promoção do Talento Angolano e fundamentalmente a partilha do conhecimento com

ARCHITECTURAL DESIGN. Ian Sommerville, 8º edição Capítulo 11 Aula de Luiz Eduardo Guarino de Vasconcelos

- Compreender as diferenças entre os vários métodos e códigos de erro HTTP

Padrões Comportamentais

Tópicos da Aula. POO e Padrões de Projetos. Considere três classes... Reuso de Classes. Locadora de DVD. Sistema Acadêmico

Linguagens de Domínio Específico

Designing Data Intensive Applications

Padrões de Projeto. Padrões de Projeto. Além dos 23 Padrões GoF. Os 23 Padrões de Projeto. Documentação de um Padrão. Classificação dos Padrões

Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça. Padrão Observer (Observador)

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA ENGENHARIA DE SOFTWARE

Para entender essas ligações foram criadas várias tecnologias capazes de fazer a correlação em meio a um grande volume de dados.

Compreender as diferenças entre os vários métodos e códigos de erro HTTP. Conhecer as linguagens fundamentais para programação para a Web

Padrões de Projeto de Software

Atomic Design: redesenhando os entregáveis de designers e desenvolvedores

MERCADO DE TRABALHO DE TI E O IMPACTO DO ANGULAR 7

Padrões de Testes Automatizados

ESTUDO DO PADRÃO DE PROJETO OBSERVER NO DESENVOLVIMENTO DE SOFTWARES UTILIZANDO A ARQUITETURA MVC RESUMO

PDS. Aula 1.6 Modelos de Processo. Prof. Dr. Bruno Moreno

O Estudo de Viabilidade. Jaelson Castro

Introdução ao Zend Framework 2

Definindo um padrão para arquitetura Web

Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça. Padrão Observer (Observador)

Introdução Diagrama de Classes Diagrama de Seqüência Diagrama de Atividades. Diagramas UML. Classe, Seqüência e Atividades. Marcio E. F.

Agenda da Aula. Arquitetura de Software e Padrões Arquiteturais. Elementos de um Padrão. Arquitetura de Software. Arquitetura de Software

Padrões de Projeto de Software

Aula 4 Encapsulamento e Relacionamento Cleverton Hentz

Implementação de Padrões de Projeto em Java e AspectJ

Sistema para acompanhamento de Trabalhos de Conclusão de Curso. Elisângela Cristina Lombardi Klitzke Acadêmica Dalton Solano dos Reis - Orientador

Preparação AV3 Fundamentos de Redes de Computadores

Características de Sistemas Distribuídos

INF011 Padrões de Projeto. 03 Abstract Factory

Hélio Engholm Jr. Novatec

Padrões de Projeto. Parte 1. Prof. Fellipe Aleixo

AngularJS. Uma abordagem prática e objetiva. Michael Henrique R. Pereira. Novatec

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

Desenvolvimento de Projetos

RECONSTRUÇÃO DE UMA APLICAÇÃO WEB UTILIZANDO PADRÕES

3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks

BibIme - Um Software Gerenciador de Bibliotecas Produzido de Forma Cooperativa

Arquitetura de Software: Introdução. Prof. Fellipe Aleixo

Características de Sistemas Distribuídos

Facilitando sua vida com

Arquitetura de Software visão emergente

Prof. Luiz A. Nascimento

4 FrAMEx. 4.1.Visão Geral

Structural Patterns - Bridge

Rede de computadores Cliente- servidor. Professor Carlos Muniz

Introdução a Padrões, GRASP. Nazareno Andrade (baseado no material de Hyggo Almeida e Jacques Sauvé)

Teste de Software. Planejamento de Teste. Rosemary Silveira Filgueiras Melo

DIVISÃO DE ASSUNTOS ACADÊMICOS Secretaria Geral de Cursos PROGRAMA DE DISCIPLINA

Como atender às crescentes expectativas do cliente na entrega do software. Iniciar

Um Middleware de Inteligência Artificial para Jogos Digitais 105

Curso Superior de Banco de Dados

TRABALHO DE CONCLUSÃO DE CURSO

Princípios de Engenharia de Software Resumo 8 Semana 8 Versão: 1.0 Data: 05/10/04

VISEDU-CG: Aplicação Didática para Visualizar Material Educacional, Módulo de Computação Gráfica

Sistemas Distribuídos. Plano de Curso. Plano de Curso 04/03/12 ! EMENTA:

Levantamento de classes (Análise de casos de uso)

Uma introdução a Domain Driven Design. Daniel Cukier IME-USP

Transcrição:

I DESIGN PATTERNS Como evitar problemas no futuro 1

Zalba Monteiro Desenvolvedora Full Stack Desenvolvedora de software há 7 anos, atualmente trabalhando na CWI Software. Amante de tecnologias que envolvem o universo JavaScript, entusiasta de iniciativas de empoderamento de pessoas negras e protagonismo feminino. Potterhead sim!! Feminista sim!!! E entre um código e outro, ainda dá tempo de tomar um bom café, fazer uma tatuagem ou cozinhar para os amigos. 2

Design Pattern é uma solução reutilizável geral para um problema que ocorre com frequência dentro de um determinado contexto no projeto de software 3

NodeJS vs Outros Frameworks 4

Node.js é extremamente flexível e adaptável à necessidade da aplicação e sua ideia de estrutura de projetos. 5

Anti-patterns mais comuns em Node.js 6

7

1ª Cilada Node.js é JavaScript... 8

Portanto, é assíncrono... O que é algo muito legal, mas, nem sempre, principalmente no desenvolvimento server-side. 9

2ª Cilada Promises e Callback Hell 10

Atenção! Não é porque você vai usar promisses que não vai precisar ficar de olho no callback hell. 11

3ª Cilada Tudo que vai, volta... 12

Esquecer o return... 13

Design Patterns Alguns tipos mais populares 14

Singleton especifica que apenas uma instância da classe pode existir, e esta será utilizada por toda a aplicação. Dessa forma, temos apenas um ponto de acesso central a esta instância da classe. 15

Quando usar? Para controlar a concorrência de acesso a recursos compartilhados; Para uma classe utilizada com frequência por várias partes distintas do sistema, e essa classe não gerencia nenhum estado da aplicação. 16

Observer é um padrão de projeto de software que define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado, todos seus dependentes são notificados e atualizados automaticamente. Observer é também chamado de Publisher-Subscriber, Event Generator e Dependents. 17

Quando usar? Quando existe a necessidade de fazer com que um conjunto de objetos seja notificado e atualizado automaticamente após um determinado evento no sistema; Cuidado: a desvantagem é que usar este padrão de forma indiscriminada pode causar sério impacto na performance do sistema. 18

Factory é um objeto responsável por criar e entregar outros objetos baseados nos parâmetros de entrada. 19

3 variações do padrão Factory Simples Método Abstrato Permite interfaces para criar objetos sem expor a criação lógica para o cliente. Permite interfaces para criar objetos, mas permite subclasses para determinar qual classe instanciar. Já uma fábrica abstrata é uma interface para criar objetos relacionados sem especificar/expor as suas classes. 20

Vantagem Factory (fábrica) permite-nos ter uma localização centralizada onde todos os nossos objetos são criados. 21

Injeção de dependência é quando uma ou mais dependências (ou serviços) são injetadas, ou passadas por referência, num objeto dependente. 22

Vantagens Deixar seu código desacoplado; Facilitar nos testes e isolamento dos componentes; Aplicável em cenários onde podemos trocar o comportamento do sistema, utilizando classes que realizam as mesmas funcionalidades, porém de fontes diferentes. 23

Quando usar? Quando existe a possibilidade de trocar um comportamento no sistema em determinado componente, ou quando você deseja isolar esses componentes para testes. Lembre-se: um padrão é aplicado para um problema decorrente em determinados cenários. Se você não tiver essa necessidade, não tem o porquê aplicar esse padrão. 24

Um padrão de código ruim é melhor que nenhum 25

ESLint veio para te ajudar! Lembre-se: se você não quer configurar o ESLint, utilize a fórmula já pronta de algumas empresas de sucesso. 26

Você pode adotar um padrão de projetos através de um framework confiável 27

Adonis.js 28

Sails.js 29

Boilerplate da comunidade 30

Obrigada! Zalba Monteiro zalbasmonteiro@gmail.com LinkedIn /zalbamonteiro GitHub /zalbamonteiro I 31