SlideShare ist ein Scribd-Unternehmen logo
1 von 66
Downloaden Sie, um offline zu lesen
Aplicando
S.O.L.I.D.
com
PHP7
Archer!
Daniel Archer
● Programador PHP na KingHost
● Zend Certified Engineer 5.3
● Organizador PHPRS
● Trabalho com PHP há 6 anos
● Palestrante
○ PHP Conference Brasil
○ TDC Porto Alegre
○ Faculdade Senac
???
Como é o seu
ambiente de
trabalho?
Assim...
Ou Assim…...?
???
O Que é SOLID?
Em poucas palavras
“
Princípios para criar sistemas de
fácil manutenção e extensíveis
ao longo do tempo.
Benefícios
Compreensão
Mais fácil de entender o
funcionamento do sistema
Benefícios
Fácil Manutenção
Classes definidas e com scopo
pequeno
Benefícios
Reuso
Poucas responsabilidades, facilitam o
reaproveitamento
Benefícios
Extensível
Pouca dependência, facilita e criação
de novas classes.
O que significa
S.O.L.I.D ?
O que significa?
◎ Single Responsability
A classe deve ter apenas um motivo para ser
alterada.
O que significa?
◎ Single Responsability
◎ Open / Close Principle
Aberta para extensão, fechada para alteração.
O que significa?
◎ Single Responsability
◎ Open / Close Principle
◎ Liskov Subtitution
A SubClasse deve ser substituível por sua classe
Base.
O que significa?
◎ Single Responsability
◎ Open / Close Principle
◎ Liskov Subtitution
◎ Interface Segregation
Interfaces específicas
para problemas específicos.
O que significa?
◎ Single Responsability
◎ Open / Close Principle
◎ Liskov Subtitution
◎ Interface Segregation
◎ Dependency Inversion
Design é gerenciar Dependências!
O que significa?
◎ Dependency Inversion
Se voçe utiliza alguma coisa,
Você é dependente dela.
Se algo que você é dependente muda,
Voçe precisa mudar.
Um mundo melhor...
… ou não!
Over Engineering
Não antecipe problemas que você não tem
PHP7
PHP como nunca se viu antes!
Scalar Type Hints
Int, Float, String, Bool
+
declare(strict_types = 1);
Place your screenshot here
Lets Code
Aprendemos código, fazendo código.
+Robusto
-Código
-Responsabilidades
Próximo Passo
Exercitar...
Calisthenics
“Exercícios”
Créditos: Frank Medrano, Atleta Vegano
Fisiculturismo
===
Proteina Animal
Fisiculturismo
===
Proteina Animal
PHP
===
WordPress
PHP
!==
WordPress
Nós podemos escrever um código
bom!
Continuando… Calisthenics
◎ 1#Uma identação por método
Continuando… Calisthenics
◎ 1#Uma identação por método
◎ 2#Não use Else
Continuando… Calisthenics
◎ 1#Uma identação por método
◎ 2#Não use Else
◎ 3#Encapsular tipos Primitivos
Continuando… Calisthenics
◎ 1#Uma identação por método
◎ 2#Não use Else
◎ 3#Encapsular tipos Primitivos
◎ 4#Apenas uma -> por linha
Continuando… Calisthenics
◎ 1#Uma identação por método
◎ 2#Não use Else
◎ 3#Encapsular tipos Primitivos
◎ 4#Apenas uma -> por linha
◎ 5#Não Abrevie
◎ 6#Classes Pequenas
Continuando… Calisthenics
◎ 6#Classes Pequenas
◎ 7#Limite atributos
Continuando… Calisthenics
◎ 6#Classes Pequenas
◎ 7#Limite atributos
◎ 8#Use Coleções
Continuando… Calisthenics
◎ 6#Classes Pequenas
◎ 7#Limite atributos
◎ 8#Use Coleções
◎ 9#Getters and Setters
Continuando… Calisthenics
◎ 6#Classes Pequenas
◎ 7#Limite atributos
◎ 8#Use Coleções
◎ 9#Getters and Setters
◎ 10#Documente!
Continuando… Calisthenics
PHP7
SOLID
Calisthenics
PHP7
SOLID
Calisthenics
Single
Resp.
PHP7
Calisth.
Early
Return
Collections
Obrigado!
Perguntas?
◎ contato@danielcramer.com.br
◎ facebook.com/danielmarquescramer
◎ github.com/danielcramer
◎ www.php-rs.org
Resources
Obrigado especial a todos que contribuíram com essa
palestra:
◎ https://wiki.php.net/rfc/scalar_type_hints
◎ http://fr.slideshare.net/darkmira/scalar-types-hints
◎ http://pt.slideshare.net/rdohms/writing-code-that-lasts-or-writing-
code-you-wont-hate-tomorrow-57656162
◎ http://confreaks.tv/videos/goruco2009-solid-object-oriented-design
◎ http://pt.slideshare.net/petrabarus/whats-new-in-php7
◎ http://pt.slideshare.net/guilhermeblanco/php-para-adultos-clean-code-
e-object-calisthenics
◎
◎

Weitere ähnliche Inhalte

Was ist angesagt?

Lei de Demeter parte
Lei de Demeter parteLei de Demeter parte
Lei de Demeter parte
Jorge Oleques
 

Was ist angesagt? (20)

Ruby
RubyRuby
Ruby
 
Clean code
Clean codeClean code
Clean code
 
Clean Code
Clean CodeClean Code
Clean Code
 
Lapidando ruby
Lapidando rubyLapidando ruby
Lapidando ruby
 
Clean Code (Robert C. Martin)
Clean Code (Robert C. Martin)Clean Code (Robert C. Martin)
Clean Code (Robert C. Martin)
 
Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)
 
Clean Code - Conceitos e filosofia
Clean Code - Conceitos e filosofiaClean Code - Conceitos e filosofia
Clean Code - Conceitos e filosofia
 
Clean code - Mantenha seu código limpo
Clean code - Mantenha seu código limpoClean code - Mantenha seu código limpo
Clean code - Mantenha seu código limpo
 
Refinamento e boas práticas de programação
Refinamento e boas práticas de programaçãoRefinamento e boas práticas de programação
Refinamento e boas práticas de programação
 
Lapidando código ruby com Object Calisthenics
Lapidando código ruby com Object CalisthenicsLapidando código ruby com Object Calisthenics
Lapidando código ruby com Object Calisthenics
 
Logica de programação. introdução[AULA-1]
Logica de programação. introdução[AULA-1]Logica de programação. introdução[AULA-1]
Logica de programação. introdução[AULA-1]
 
Lei de Demeter parte
Lei de Demeter parteLei de Demeter parte
Lei de Demeter parte
 
TDC2012 Agile - 7 Padrões Para Implantar Métodos Ágeis
TDC2012 Agile - 7 Padrões Para Implantar Métodos ÁgeisTDC2012 Agile - 7 Padrões Para Implantar Métodos Ágeis
TDC2012 Agile - 7 Padrões Para Implantar Métodos Ágeis
 
Clean code em C#
Clean code em C#Clean code em C#
Clean code em C#
 
Práticas de Programação em .NET
Práticas de Programação em .NETPráticas de Programação em .NET
Práticas de Programação em .NET
 
A importancia das certificacoes para profissionais de software livre - Matheu...
A importancia das certificacoes para profissionais de software livre - Matheu...A importancia das certificacoes para profissionais de software livre - Matheu...
A importancia das certificacoes para profissionais de software livre - Matheu...
 
Apresentação Clean Code
Apresentação Clean CodeApresentação Clean Code
Apresentação Clean Code
 
Refatorar é preciso! 2.0
Refatorar é preciso! 2.0Refatorar é preciso! 2.0
Refatorar é preciso! 2.0
 
Princípios de Programação Orientada a Objetos Solid, dry e kiss
Princípios de Programação Orientada a Objetos Solid, dry  e kiss Princípios de Programação Orientada a Objetos Solid, dry  e kiss
Princípios de Programação Orientada a Objetos Solid, dry e kiss
 
Palestra: Desafios do desenvolvedor no mercado de trabalho
Palestra: Desafios do desenvolvedor no mercado de trabalhoPalestra: Desafios do desenvolvedor no mercado de trabalho
Palestra: Desafios do desenvolvedor no mercado de trabalho
 

Andere mochten auch

Pensando fora da caixa
Pensando fora da caixaPensando fora da caixa
Pensando fora da caixa
William "Kina"
 

Andere mochten auch (15)

Trabalhando de forma profissional com silex
Trabalhando de forma profissional com silexTrabalhando de forma profissional com silex
Trabalhando de forma profissional com silex
 
Hackeando sua aplicaçao php na pratica
Hackeando sua aplicaçao php na pratica Hackeando sua aplicaçao php na pratica
Hackeando sua aplicaçao php na pratica
 
Pensando fora da caixa
Pensando fora da caixaPensando fora da caixa
Pensando fora da caixa
 
APIs do Jeito Certo
APIs do Jeito CertoAPIs do Jeito Certo
APIs do Jeito Certo
 
SOLID Principies
SOLID PrincipiesSOLID Principies
SOLID Principies
 
Solid
SolidSolid
Solid
 
OOP (in portuguese)
OOP (in portuguese)OOP (in portuguese)
OOP (in portuguese)
 
Gerenciamento de serviços e eventos em PHP com Zend Framework 2
Gerenciamento de serviços e eventos em PHP com Zend Framework 2Gerenciamento de serviços e eventos em PHP com Zend Framework 2
Gerenciamento de serviços e eventos em PHP com Zend Framework 2
 
Siemens solid edge-v5-pt
Siemens solid edge-v5-ptSiemens solid edge-v5-pt
Siemens solid edge-v5-pt
 
Programadores x Web Designers - Desenvolvimento de Sistemas Web
Programadores x Web Designers - Desenvolvimento de Sistemas WebProgramadores x Web Designers - Desenvolvimento de Sistemas Web
Programadores x Web Designers - Desenvolvimento de Sistemas Web
 
Php data structures – beyond spl (online version)
Php data structures – beyond spl (online version)Php data structures – beyond spl (online version)
Php data structures – beyond spl (online version)
 
Solid principles
Solid principlesSolid principles
Solid principles
 
IA Prolog
IA PrologIA Prolog
IA Prolog
 
Qualidade - pensando fora da caixa
Qualidade - pensando fora da caixaQualidade - pensando fora da caixa
Qualidade - pensando fora da caixa
 
Certificacao Php
Certificacao PhpCertificacao Php
Certificacao Php
 

Ähnlich wie Aplicando SOLID com PHP7

Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Gabriel Rubens
 

Ähnlich wie Aplicando SOLID com PHP7 (20)

Coding Dojo - Funcionamento
Coding Dojo - FuncionamentoCoding Dojo - Funcionamento
Coding Dojo - Funcionamento
 
Objects calisthenics - Os 10 mandamentos do rei do código
Objects calisthenics - Os 10 mandamentos do rei do códigoObjects calisthenics - Os 10 mandamentos do rei do código
Objects calisthenics - Os 10 mandamentos do rei do código
 
Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem Python
 
Minicurso de TDD
Minicurso de TDDMinicurso de TDD
Minicurso de TDD
 
Refatoração 1/3 webinar
Refatoração 1/3   webinarRefatoração 1/3   webinar
Refatoração 1/3 webinar
 
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
 
[Interagil 2019] recuperando a essencia da agilidade para desenvolvedores
[Interagil 2019] recuperando a essencia da agilidade para desenvolvedores[Interagil 2019] recuperando a essencia da agilidade para desenvolvedores
[Interagil 2019] recuperando a essencia da agilidade para desenvolvedores
 
P01 - Como ser um desenvolvedor melhor
P01 - Como ser um desenvolvedor melhorP01 - Como ser um desenvolvedor melhor
P01 - Como ser um desenvolvedor melhor
 
De Fred Krueger a Brad Pitt como melhorar o seu código e fazê-lo ficar lindo
De Fred Krueger a Brad Pitt como melhorar o seu código e fazê-lo ficar lindoDe Fred Krueger a Brad Pitt como melhorar o seu código e fazê-lo ficar lindo
De Fred Krueger a Brad Pitt como melhorar o seu código e fazê-lo ficar lindo
 
Minicurso de Lógica e Linguagem Java 6.0
Minicurso de Lógica e Linguagem Java 6.0Minicurso de Lógica e Linguagem Java 6.0
Minicurso de Lógica e Linguagem Java 6.0
 
Euquipe, evoluindo como dev
Euquipe, evoluindo como devEuquipe, evoluindo como dev
Euquipe, evoluindo como dev
 
Coding Dojo - Aplicando Princípios Ágeis
Coding Dojo - Aplicando Princípios ÁgeisCoding Dojo - Aplicando Princípios Ágeis
Coding Dojo - Aplicando Princípios Ágeis
 
Boas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de softwareBoas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de software
 
Apresentação WTM
Apresentação WTMApresentação WTM
Apresentação WTM
 
Abordagem Funcional para Gerenciamento de Erros em .NET
Abordagem Funcional para Gerenciamento de Erros em .NETAbordagem Funcional para Gerenciamento de Erros em .NET
Abordagem Funcional para Gerenciamento de Erros em .NET
 
Treinamento TDD - Atech
Treinamento TDD - AtechTreinamento TDD - Atech
Treinamento TDD - Atech
 
TDC 2012 TDD e 20 coisas que você precisa saber
TDC 2012 TDD e 20 coisas que você precisa saberTDC 2012 TDD e 20 coisas que você precisa saber
TDC 2012 TDD e 20 coisas que você precisa saber
 
PHP Além da universidade
PHP Além da universidadePHP Além da universidade
PHP Além da universidade
 
Paradigmas de Programação - Imperativo, Orientado a Objetos e Funcional
Paradigmas de Programação - Imperativo, Orientado a Objetos e FuncionalParadigmas de Programação - Imperativo, Orientado a Objetos e Funcional
Paradigmas de Programação - Imperativo, Orientado a Objetos e Funcional
 
Coding Dojo
Coding DojoCoding Dojo
Coding Dojo
 

Mehr von Daniel Archer Marques Cramer

Mehr von Daniel Archer Marques Cramer (8)

Filas e mensageria com RabbitMQ
Filas e mensageria com RabbitMQFilas e mensageria com RabbitMQ
Filas e mensageria com RabbitMQ
 
Monitorando aplicações com Prometheus
Monitorando aplicações com PrometheusMonitorando aplicações com Prometheus
Monitorando aplicações com Prometheus
 
Over engineering
Over engineeringOver engineering
Over engineering
 
Frameworks e microframeworks php - conexão kinghost
Frameworks e microframeworks php - conexão kinghostFrameworks e microframeworks php - conexão kinghost
Frameworks e microframeworks php - conexão kinghost
 
Case Kinghost + Elasticsearch
Case Kinghost + ElasticsearchCase Kinghost + Elasticsearch
Case Kinghost + Elasticsearch
 
Php on the cloud
Php on the cloudPhp on the cloud
Php on the cloud
 
PHP 7 - A Maioridade do PHP
PHP 7 - A Maioridade do PHPPHP 7 - A Maioridade do PHP
PHP 7 - A Maioridade do PHP
 
PHP Tools for Fast coding
PHP Tools for Fast codingPHP Tools for Fast coding
PHP Tools for Fast coding
 

Kürzlich hochgeladen

Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
Natalia Granato
 

Kürzlich hochgeladen (6)

Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 

Aplicando SOLID com PHP7