Aplicando SOLID com PHP7

Post on 23-Jan-2018

615 views 0 download

Transcript of Aplicando SOLID com PHP7

AplicandoS.O.L.I.D.

comPHP7

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ãoMais fácil de entender o

funcionamento do sistema

Benefícios

Fácil ManutençãoClasses definidas e com scopo

pequeno

Benefícios

ReusoPoucas responsabilidades, facilitam o

reaproveitamento

Benefícios

ExtensívelPouca dependência, facilita e criação

de novas classes.

O que significaS.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 InversionDesign é 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 EngineeringNão antecipe problemas que você não tem

PHP7PHP como nunca se viu antes!

Scalar Type HintsInt, Float, String, Bool+declare(strict_types = 1);

Place your screenshot here

Lets CodeAprendemos código, fazendo código.

+Robusto-Código-Responsabilidades

Próximo PassoExercitar...

Calisthenics

“Exercícios”

Créditos: Frank Medrano, Atleta Vegano

Fisiculturismo ===

Proteina Animal

Fisiculturismo ===

Proteina Animal

PHP ===

WordPress

PHP !==

WordPressNó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◎