advertisement

Princípios Básicos para Desenvolvedores

50 %
50 %
advertisement
Information about Princípios Básicos para Desenvolvedores
Technology

Published on March 11, 2014

Author: guitoper

Source: slideshare.net

Description

Introdução aos temas "Clean Code" e "Princípios de Design S.O.L.I.D"
advertisement

Princípios Básicos para Desenvolvedores while(!(succeed=try())) Guilherme Reis

Agenda • Dicas para iniciantes; • Mau cheiro; • Porque se importar com o código; • Código limpo; • Princípios básicos de design;

Programação...

Programação é lógica, não magia negra • “Eu gosto de programar, só não gosto de lógica” (Ex- aluno de Computação)

Antes de codificar, pense no que quer/precisa fazer

Não funcionará na primeira vez! Provavelmente nem na segunda ou terceira;

Mas quando funciona...

Trabalho em equipe

Maus cheiros • Primeiramente usado por Kent Beck e citado por Martin Fowler; • Indicação superficial de alerta à problemas mais profundos no sistema; • Não são bugs, mas falhas no design: • Atraso no desenvolvimento • Risco de bugs e falhas no futuro • “Qualquer nariz” consegue identificar;

Exemplos • Classes e métodos/funções enormes; • Código ilegível; • Códigos repetidos; • Códigos redundantes; • Métodos/Funções com vários parâmetros; • Baixa coesão*; • Alto acoplamento*;

Baixa Coesão

Alto Acoplamento • Forte dependência entre componentes; • Dificulta mudanças; • Dificulta reaproveitamento de código;

Alto Acoplamento

Fases de um projeto

• Tudo é muito bonito, limpo, elegante e convincente; • Tudo funciona e as atividades são cumpridas como se esperava; • Tudo flui conforme o cronograma... No começo...

O importante é funcionar... • O código começa a “ter um cheiro desagradável” • No começo nem parece tão ruim; • Uma verruga aqui, uma gambiarra ali, mais tudo ainda parece bonito e funcional; • Não há tempo para organização e melhorias; • “Em time que está ganhando não se meche”;

A culpa não é minha...

“Tudo muda, tudo sempre mudará...” • Bugs começam a aparecer; • Mudanças nos requisitos começam a surgir; • Puxadinhos (Extensões) se tornam necessários; • Novos campos e botões são adicionados; • Então o código começa a apodrecer e consequentemente, o “cheiro” fica insuportável;

Como prevenir? • Mínimo: • Se importe com o código gerado; • Escrevendo um “código limpo”; • Preocupando-se com o design do software; • Melhor ainda: • Fazer revisões de códigos com a equipe; • Escrevendo testes automatizados; • Realizando refactors ao identificar maus cheiros no software;

Por que devo me importar?

Por que devo me importar?

Ciclo de um projeto

Prevenção

Por que devo me importar? • Não é só pelaos 20 centavos estética: • É pelo TEMPO gasto!

Como assim tempo? • O que fazemos em nosso tempo? Sim, os 20% que sobram após o coffe break, pipi break, tea break, brief break, etc. • Planejamos mudanças; • Lemos (e muito) código; • Atuamos nos planos; • Codificação de verdade? Não muito...

Mais e o código? • Similar aos bancos de dados: • Taxa de leitura:escrita de 10:1; • Não fazemos UPDATE e sim várias sequências de GET e PUT; • Nosso cérebro não é um bom cache;

Tempo é dinheiro! • Como reduzir custos através do código? Enchendo o projeto de estagiários? • Tempo de leitura/entendimento; • Seus colegas lerão seus códigos inúmeras vezes • Entender um módulo leva 2 horas ou 5 minutos? • Tempo de escrita/adaptação/manutenção; • O software irá mudar: fato; • Quão fácil será esta mudança? • Quanto do código será reaproveitado em outro projeto?

Pensando bem...

Código limpo

Humanos <- Código Máquinas <- 01101001010

Por falar em nome...

Nomenclatura • Sim, o nome importa! • O propósito de um nome é revelar intenção/objetivo; • Depois do ctrl+c e ctrl+v, o que mais utilizamos em IDEs é o ctrl+SPACE

Nomenclatura • Qual componente do formulário será mostrado ou escondido?

Nomenclatura • Qual componente do formulário será mostrado ou escondido?

O que este código faz?

Melhor?

E assim?

O que mudou? • Nomes que revelam intenção: • flaggedCells no lugar de list • cell no lugar de x • Remoção de números mágicos: • cell[STATUS_VALUE] no lugar de x[0] • Abstração de tipo de dados: • Cell cell no lugar de int[] cell

Princípios básicos design • 5 princípios de boas práticas vindas de décadas de experiência em engenharia de software; • [S]ingle Responsibility Principle [O]pen/Closed Principle [L]iskov Substitution Principle [I]nterface Segregation Principle [D]ependency Inversion Principle

S – Single Responsibility

S – Single Responsibility • Uma classe/método deve ter apenas uma razão para ser modificado(a); • Menor impacto em mudanças; • Reaproveitamento de código; • Alta coesão;

S – Single Responsibility

S – Single Responsibility

O - Open Closed • Fechado para edições; • Aberto para extensões;

O - Open Closed

O - Open Closed

L - Liskov substitution • As classes derivadas não devem ser mais fracas e nem mais fortes que sua base

L - Liskov substitution Customer Gold Silver Guest

L - Liskov substitution

L - Liskov substitution

I - Interface Segregation • Melhor ter várias interfaces pequenas para propósitos específicos • Do que interfaces genéricas enormes

I - Interface Segregation

I - Interface Segregation

D - Dependency inversion • Dependa de abstrações, não de detalhes concretos

D - Dependency inversion

D - Dependency inversion

Resultado

Perguntas

Interessado?

OBRIGADO! • Skype: guitoper • Twitter: @guitoper • LinkedIn: br.linkedin.com/pub/guilherme-reis/22/5a2/a44/ • Slides: http://pt.slideshare.net/guitoper/princpios-bsicos- para-desenvolvedores

Add a comment

Related presentations

Presentación que realice en el Evento Nacional de Gobierno Abierto, realizado los ...

In this presentation we will describe our experience developing with a highly dyna...

Presentation to the LITA Forum 7th November 2014 Albuquerque, NM

Un recorrido por los cambios que nos generará el wearabletech en el futuro

Um paralelo entre as novidades & mercado em Wearable Computing e Tecnologias Assis...

Microsoft finally joins the smartwatch and fitness tracker game by introducing the...

Related pages

Princípios Básicos para Desenvolvedores - Technology

PRINCÍPIOS BÁSICOS PARA NAMORO IGREJA MISSIONÁRIA UNIDA Campinas e Hortolândia Edição Revista e Ampliada Janeiro / 2011 PRINCÍPIOS BÁSICOS PARA O ...
Read more

Princípios básicos do ActionScript para desenvolvedores de ...

O ActionScript 3.0 permite que os desenvolvedores criem suas próprias classes personalizadas. Por exemplo, o código a seguir define uma classe ...
Read more

Introdução ao Windows 7 para Desenvolvedores ...

Introdução ao Windows 7 para Desenvolvedores ... Redescobrindo os princípios básicos: desempenho é tudo Instrumentação e diagnóstico
Read more

Básico Do Pivotal Tracker Para Desenvolvedores

Basicamente, o Pivotal Tracker é uma ferramenta que ajuda os gerentes de projeto e desenvolvedores a planejar o projeto do desenvolvimento de um software.
Read more

Introdução ao Windows 7 para Desenvolvedores – Gilson ...

Este livro sobre Windows 7 para desenvolvedores lança alguns recursos que aperfeiçoam de modo mais direto a experiência do usuário. Por exemplo, a ...
Read more

Princípios Básicos para Ensaios de Grupos Musicais ...

Princípios Básicos para Ensaios de Grupos Musicais from Universidade da Carolina do Norte em Chapel Hill. Learn and practice the basic principles of ...
Read more

Introdução à UWP para desenvolvedores de iOS

Introdução à UWP para desenvolvedores de iOS ... Elementos gráficos 3D básicos para jogos DirectX. ... Princípios básicos da amostra do Marble Maze.
Read more

Logística - princípios básicos - Business

Princípios básicos da logística. Apresentação realizada para a matéria de Logística Empresarial.
Read more

Aplicativos em destaque na Windows Store – Blog da Windows ...

A cada semana na Windows Store, procuramos promover os melhores aplicativos para os nossos clientes. Passamos o dia inteiro, todos os dias, buscando ...
Read more