SlideShare una empresa de Scribd logo
1 de 94
Descargar para leer sin conexión
Os 10
mandamento do
Rei do código!
Objects Calisthenics
Marcelo Siqueira
 @marcelosiqueira


marsiqueira

 +MarceloSiqueira
 marsiqueira
 marcelosiqueira

Programador PHP e
Python, Defensor de
Software Livre e
GNU/Linux, Empreendedor,
Nerd e tomador de cerveja!
Essa palestra foi baseado
nas palestras.
Guilherme Blanco
@guilhermeblanco

Object Calisthenics aplicado ao PHP

Essa palestra foi baseado
nas palestras.
Guilherme Blanco
@guilhermeblanco

Object Calisthenics aplicado ao PHP

Essa palestra foi baseado
nas palestras.
Rafael Dohms
@rdohms

Your code sucks, let's fix it!
Lembrete

Essa palestra irá falar
sobre qualidade de
códigos!
Então, vamos agregar!
Meu código
agrega valor?
É legível?

Meu código
agrega valor?
É legível?

Meu código
agrega valor?
É testável?
É fácil a manutenção?

É legível?

Meu código
agrega valor?
É testável?
É fácil a manutenção?

É legível?

Meu código
agrega valor?
É reusável?

É testável
O que acham disso?
Não agrega valor!
Então, como podemos
agregar no código?
Object Calisthenics
cal·is·then·ics - substantivo - /ˌkaləsˈTHeniks/
Termo derivado do grego: "exercício",
"exercício de relaxamento", "ginástica rítmica"

Object Calisthenics
cal·is·then·ics - substantivo - /ˌkaləsˈTHeniks/
Termo derivado do grego: "exercício",
"exercício de relaxamento", "ginástica rítmica"

Object Calisthenics
Uma variedade de exercícios simples e
rítmicos para alcançar melhor qualidade
de código e OO.
“Então aqui está um exercício
que pode ajudá-lo a
internalizar princípios de um
bom design orientado a
objeto e, na verdade, usá-las
na vida real.”

--Jeff Bay
“Então aqui está um exercício
que pode ajudá-lo a
Importante:
internalizar princípios de um
bom design
PHP != JAVA orientado a
Algumas adaptações devem ser feitas
objeto e, na verdade, usá-las
na vida real.”

--Jeff Bay
O OC são nove (9) orientações,
regras, mandamentos,
"bem" simples
e que podem ser utilizadas
em qualquer linguagem
orientada a objetos.
Mas para agregar mostraremos
10(dez) orientações, regras,
mandamentos.
O OC são nove (9) orientações,
regras, mandamentos,
"bem" simples
e que podem ser utilizadas
Repetindo:
em PHP é !=linguagem
qualquer JAVA
orientada a objetos.
Algumas adaptações devem ser feitas
Mas para agregar mostraremos
10(dez) orientações, regras,
mandamentos.
# 1 Mandamento
"Somente um nível de
indentação por método"
método"
# 1 Mandamento
"Somente um nível de
indentação por método"
método"
Neologismo derivado da palavra inglesa
"indentation", que significa "recuo".
0
1

2
3
0
1

2
3
Espaço em branco
Espaço em branco

Logica duplicada
0
1

2
0
1

2
IF de uma linha, operação simples
Return rápido

IF de uma linha, operação simples
Return rápido

IF de uma linha, operação simples

Função nativa C, mais rápida.
Sempre podemos melhorar!
Interação rápida

Método reusável
Interação rápida

Retorno aceitável: expectativa/retorno

Método reusável
Interação rápida

Retorno aceitável: expectativa/retorno

Método reusável

Método matches, resultado “true”
#1 Mandamento
Somente um nível de indentação/recuo por método

Benefícios:
– Maior coesão;
– Reduz a complexidade ciclomática;
– Métodos acabam fazendo apenas uma coisa,
como deve ser;
– Aumenta a reusabilidade.
# 2 Mandamento
"Não utilize a
palavra-chave 'else'"
'else'"
Variável intermediária

Variável intermediária
Intermediária removida

Retorno rápido
#2 Mandamento
Não utilize a palavra-chave 'else'

Benefícios:
– Ajuda a prevenir duplicação de código;
– Reduz a complexidade ciclomática;
– Faz o código ficar mais limpo, passando por um
único caminho.
Adaptada

# 3 Mandamento
"Encapsule os tipos
primitivos e strings"
* se eles possuírem
comportamento
Operação incorreta
Operação incorreta
Agora pode encapsular todas as
operações relacionadas com a animação
Adaptada

#3 Mandamento
Encapsule os tipos primitivos e strings
* se eles possuírem comportamento

Benefícios:
– Ajuda a identificar o que deve ser um objeto;
– Indução de Tipo;
– Encapsulamento de operações.
Adaptada

# 4 Mandamento
"Somente um ponto
(“arrow” para o PHP) por
linha"
* cadeia getter ou uma
interface fluente
propriedades são mais difíceis de testar

Sem espaço em branco
Interface fluente
Interface fluente

Operadores alinhados
Interface fluente

Operadores alinhados

Somente geters (nenhuma operação)
Adaptada

#4 Mandamento
Somente um ponto (“arrow” para o PHP) por linha
* cadeia getter ou uma interface fluente

Benefícios:
– Legibilidade;
– Construção de testes facilitada (mocks);
– Mais fácil para depurar.
# 5 Madamento
"Não abreviar"
Por que você abrevia?
– Preguiça de escrever o mesmo
nome várias vezes...
• Talvez isso indique duplicidade de
código!
- Preguiça de escrever o nome do
método muito longo...
• Talvez isso indique que o seu
método faz mais de uma coisa. Isso
deve ser separado em vários
métodos ou até classes!
Mais do que uma responsabilidade?
Mais do que uma responsabilidade?

começa a partir de onde?
Mais do que uma responsabilidade?

começa a partir de onde?

Use nomes mais claras:
fetchPage()
downloadPage()
Mais do que uma responsabilidade?

começa a partir de onde?

Use nomes mais claras:
fetchPage()
downloadPage()

Use um dicionário:
fork, create, begin, open
Mais do que uma responsabilidade?

começa a partir de onde?

Use nomes mais claras:
fetchPage()
downloadPage()

Use um dicionário:
fork, create, begin, open
Linha de tabela?
#5 Mandamento
Não abreviar

Benefícios:
– Comunicação mais clara;
– Facilita a busca por problemas ocultos.
Adaptada

# 6 Mandamento
"Mantenha suas classes
"Mantenha
pequenas"
pequenas"
Regra original:
– 50 linhas por classe.
– 200 linhas por classe (para incluir
os blocos de documentação);
– 10 metodos por classes;
classes;
– 15 classes por
pacote/namespace/pasta;
– De 15 a 20 linhas por método.
Adaptada
#6 Mandamento
Mantenha suas classes pequenas

Benefícios:
– Responsabilidade única;
– Métodos objetivos;
– Pacotes/namespaces mais enxutos.
Adaptada

# 7 Mandamento
"Limite o número das
variáveis de instância
(máximo 5)"
5)"
Adapted

Limitar em 5
Adaptada
#7 Mandamento
Limite o número das variáveis de instância (2 para 5)

Benefícios:
– Lista reduzida de dependências;
– Mais fácil para fazer Mocking para testes.
# 8 Mandamento
"Use coleções de primeiro
nível"
Doctrine:
ArrayCollection
• Qualquer classe que contenha uma coleção
(ou tenha esse propósito), não deve conter
outras propriedades;
• Encapsulamento de coleções primitivas
(arrays);
• Utilização de Interfaces Orientadas a
Objetos:
– Collections do Java;
– SPL do PHP.
#8 Mandamento
Use coleções de primeiro nível

Benefícios:
– É possível implementar operações em coleções;
– Utilizar métodos já existentes em interfaces
pré-definidas.
Adaptada

# 9 Mandamento
"Não use métodos
getter/setter"
getter/setter"
* Use para propriedades
no código PHP
●

Muitos frameworks utilizam os
métodos getters e setters para
inicializar variáveis, reduzindo código e
evitando erros desnecessários.

●

Não coloque nenhum tipo de regra de
negócio nos getters e setters.
Adaptada

#9 Mandamento
Não use métodos getter/setter
* Use para propriedades no código PHP

Benefícios:
– Operações de injetor ;
– Encapsulamento das transformações.
Criada

# 10 Mandamento
"Documente seu código!"
código!
Mais do que uma responsabilidade?

começa a partir de onde?

Use nomes mais claras:
fetchPage()
downloadPage()

Use um dicionário:
fork, create, begin, open
Linha de tabela?
Uma nota sobre o custo
de execução da função

Marca todo para que não
se perca nas mudanças

Documentação gerada pela
API do phpDocumentor
#10 Mandamento
Documente seu código!
código!

Benefícios:
– Documentação automática por API;
– Transmissão de "linha de pensamento";
– Evita confusões.
Recaptulando:
#1. Somente um nível de indentação por método;
#2. Não utilize a palavra-chave 'eles';
'eles';
#3. Encapsule os tipos primitivos e strings;
#4. Somente um ponto por linha;
linha;
#5. Não abreviar;
#6. Mantenha suas classes pequenas
#7. Limite número das variáveis de instância (máximo 5);
#8. Use coleções de primeiro nível;
#9. Use métodos getter/setter;
getter/setter;
#10. Documente seu código.
Perguntas?
 @marcelosiqueira


marsiqueira

 +MarceloSiqueira
 marsiqueira
 marcelosiqueira
 eu@marcelosiqueira.com.br
eu@marcelosiqueira.com.br

Obrigado!

Más contenido relacionado

La actualidad más candente

PHPUnit e teste de software
PHPUnit e teste de softwarePHPUnit e teste de software
PHPUnit e teste de softwarericardophp
 
DDD + BDD + TDD - RF 2015
DDD + BDD + TDD - RF 2015 DDD + BDD + TDD - RF 2015
DDD + BDD + TDD - RF 2015 Eduardo Bregaida
 
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)Rodrigo Kono
 
PHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformancePHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformanceFelipe Ribeiro
 
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çãoAécio Costa
 
A importância da programação funcional no dia a-dia
A importância da programação funcional no dia a-diaA importância da programação funcional no dia a-dia
A importância da programação funcional no dia a-diaGabriel Schade Cardoso
 
Introdução à programação funcional
Introdução à programação funcionalIntrodução à programação funcional
Introdução à programação funcionalGabriel Schade Cardoso
 
PHP Simples e Produtivo
PHP Simples e ProdutivoPHP Simples e Produtivo
PHP Simples e ProdutivoFlávio Lisboa
 
MSP Tech Days 2018 - Programação Funcional com F#
MSP Tech Days 2018 - Programação Funcional com F#MSP Tech Days 2018 - Programação Funcional com F#
MSP Tech Days 2018 - Programação Funcional com F#Gustavo Bellini Bigardi
 
Refactory Worshop
Refactory WorshopRefactory Worshop
Refactory Worshopguestd37c23
 
Funções com Ruby[AULA 5]
Funções com Ruby[AULA 5]Funções com Ruby[AULA 5]
Funções com Ruby[AULA 5]Ricardo Silva
 
Php7 esta chgando! O que você precisa saber
Php7 esta chgando! O que você precisa saberPhp7 esta chgando! O que você precisa saber
Php7 esta chgando! O que você precisa saberEr Galvão Abbott
 

La actualidad más candente (20)

Codigo limpo
Codigo limpoCodigo limpo
Codigo limpo
 
Refatorar é preciso! 2.0
Refatorar é preciso! 2.0Refatorar é preciso! 2.0
Refatorar é preciso! 2.0
 
Introducao XP
Introducao XPIntroducao XP
Introducao XP
 
Object calisthenics
Object calisthenicsObject calisthenics
Object calisthenics
 
Refactoring to patterns
Refactoring to patternsRefactoring to patterns
Refactoring to patterns
 
PHPUnit e teste de software
PHPUnit e teste de softwarePHPUnit e teste de software
PHPUnit e teste de software
 
DDD + BDD + TDD - RF 2015
DDD + BDD + TDD - RF 2015 DDD + BDD + TDD - RF 2015
DDD + BDD + TDD - RF 2015
 
Rumo à Certificação PHP
Rumo à Certificação PHPRumo à Certificação PHP
Rumo à Certificação PHP
 
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)
 
PHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformancePHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta Performance
 
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
 
Code Smells
Code SmellsCode Smells
Code Smells
 
A importância da programação funcional no dia a-dia
A importância da programação funcional no dia a-diaA importância da programação funcional no dia a-dia
A importância da programação funcional no dia a-dia
 
Introdução à programação funcional
Introdução à programação funcionalIntrodução à programação funcional
Introdução à programação funcional
 
PHP Simples e Produtivo
PHP Simples e ProdutivoPHP Simples e Produtivo
PHP Simples e Produtivo
 
MSP Tech Days 2018 - Programação Funcional com F#
MSP Tech Days 2018 - Programação Funcional com F#MSP Tech Days 2018 - Programação Funcional com F#
MSP Tech Days 2018 - Programação Funcional com F#
 
Refactory Worshop
Refactory WorshopRefactory Worshop
Refactory Worshop
 
Lapidando ruby
Lapidando rubyLapidando ruby
Lapidando ruby
 
Funções com Ruby[AULA 5]
Funções com Ruby[AULA 5]Funções com Ruby[AULA 5]
Funções com Ruby[AULA 5]
 
Php7 esta chgando! O que você precisa saber
Php7 esta chgando! O que você precisa saberPhp7 esta chgando! O que você precisa saber
Php7 esta chgando! O que você precisa saber
 

Similar a Objects calisthenics - Os 10 mandamentos do rei do código

ZeroBugsProject - Técnicas de programação efetivas
ZeroBugsProject - Técnicas de programação efetivasZeroBugsProject - Técnicas de programação efetivas
ZeroBugsProject - Técnicas de programação efetivasRafael Chinelato Del Nero
 
TDD para "meros mortais"
TDD para "meros mortais"TDD para "meros mortais"
TDD para "meros mortais"thiagobapt
 
Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...
Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...
Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...Vinicius Pulgatti
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2PrinceGuru MS
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In TubaRafael Paz
 
Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01joaocarlobarros
 
Introdução ao PHP - Criação de sites II
Introdução ao PHP - Criação de sites IIIntrodução ao PHP - Criação de sites II
Introdução ao PHP - Criação de sites IIinfo_cimol
 
PHP 5 de Forma Correta e Segura
PHP 5 de Forma Correta e SeguraPHP 5 de Forma Correta e Segura
PHP 5 de Forma Correta e SeguraKleber Silva
 
M5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-WebM5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-Webdiogoa21
 
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreamsJacqueline Abreu
 
Desenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on RailsDesenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on RailsLucas Caton
 

Similar a Objects calisthenics - Os 10 mandamentos do rei do código (20)

ZeroBugsProject - Técnicas de programação efetivas
ZeroBugsProject - Técnicas de programação efetivasZeroBugsProject - Técnicas de programação efetivas
ZeroBugsProject - Técnicas de programação efetivas
 
Clean code
Clean codeClean code
Clean code
 
TDD para "meros mortais"
TDD para "meros mortais"TDD para "meros mortais"
TDD para "meros mortais"
 
Estudos Technocorp
Estudos TechnocorpEstudos Technocorp
Estudos Technocorp
 
Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...
Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...
Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In Tuba
 
Introdução a php
Introdução a phpIntrodução a php
Introdução a php
 
Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01
 
Mini Curso de PHP
Mini Curso de PHPMini Curso de PHP
Mini Curso de PHP
 
Introdução ao PHP - Criação de sites II
Introdução ao PHP - Criação de sites IIIntrodução ao PHP - Criação de sites II
Introdução ao PHP - Criação de sites II
 
PHP 5 de Forma Correta e Segura
PHP 5 de Forma Correta e SeguraPHP 5 de Forma Correta e Segura
PHP 5 de Forma Correta e Segura
 
PHP Além da universidade
PHP Além da universidadePHP Além da universidade
PHP Além da universidade
 
M5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-WebM5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-Web
 
Programando php com excelência
Programando php com excelênciaProgramando php com excelência
Programando php com excelência
 
Clean Code
Clean CodeClean Code
Clean Code
 
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
 
Guia php
Guia phpGuia php
Guia php
 
Módulo de php
Módulo de phpMódulo de php
Módulo de php
 
Desenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on RailsDesenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on Rails
 

Más de BonoBee

O que você quer ser quando crescer? (Campus Party 13)
 O que você quer ser quando crescer?  (Campus Party 13) O que você quer ser quando crescer?  (Campus Party 13)
O que você quer ser quando crescer? (Campus Party 13)BonoBee
 
O que você quer ser quando crescer?
O que você quer ser quando crescer?O que você quer ser quando crescer?
O que você quer ser quando crescer?BonoBee
 
Inteligência Artificial e Jurimetria o futuro já chegou
Inteligência Artificial e Jurimetria o futuro já chegouInteligência Artificial e Jurimetria o futuro já chegou
Inteligência Artificial e Jurimetria o futuro já chegouBonoBee
 
Agilizando processos com Scrum
Agilizando processos com ScrumAgilizando processos com Scrum
Agilizando processos com ScrumBonoBee
 
Pitch Hackacity
Pitch HackacityPitch Hackacity
Pitch HackacityBonoBee
 
GDPR - General Data Protection Regulation
GDPR - General Data Protection RegulationGDPR - General Data Protection Regulation
GDPR - General Data Protection RegulationBonoBee
 
I.A. A Evolução
I.A. A EvoluçãoI.A. A Evolução
I.A. A EvoluçãoBonoBee
 
Economia Criativa e o Mercado de TI v2
Economia Criativa e o Mercado de TI v2Economia Criativa e o Mercado de TI v2
Economia Criativa e o Mercado de TI v2BonoBee
 
Palestra MVP - Estudo de Casos
Palestra MVP - Estudo de CasosPalestra MVP - Estudo de Casos
Palestra MVP - Estudo de CasosBonoBee
 
Palestra MVP living lab ms
Palestra MVP   living lab msPalestra MVP   living lab ms
Palestra MVP living lab msBonoBee
 
Economia Criativa e o Mercado de TI
Economia Criativa e o Mercado de TIEconomia Criativa e o Mercado de TI
Economia Criativa e o Mercado de TIBonoBee
 
WordPress: do Blog ao E-Commerce - PHPMS Conf'14
WordPress: do Blog ao E-Commerce - PHPMS Conf'14WordPress: do Blog ao E-Commerce - PHPMS Conf'14
WordPress: do Blog ao E-Commerce - PHPMS Conf'14BonoBee
 
Your code sucks, let's fix it! Objects Calisthenics
Your code sucks, let's fix it! Objects CalisthenicsYour code sucks, let's fix it! Objects Calisthenics
Your code sucks, let's fix it! Objects CalisthenicsBonoBee
 
Python: a primeira mordida
Python: a primeira mordidaPython: a primeira mordida
Python: a primeira mordidaBonoBee
 

Más de BonoBee (14)

O que você quer ser quando crescer? (Campus Party 13)
 O que você quer ser quando crescer?  (Campus Party 13) O que você quer ser quando crescer?  (Campus Party 13)
O que você quer ser quando crescer? (Campus Party 13)
 
O que você quer ser quando crescer?
O que você quer ser quando crescer?O que você quer ser quando crescer?
O que você quer ser quando crescer?
 
Inteligência Artificial e Jurimetria o futuro já chegou
Inteligência Artificial e Jurimetria o futuro já chegouInteligência Artificial e Jurimetria o futuro já chegou
Inteligência Artificial e Jurimetria o futuro já chegou
 
Agilizando processos com Scrum
Agilizando processos com ScrumAgilizando processos com Scrum
Agilizando processos com Scrum
 
Pitch Hackacity
Pitch HackacityPitch Hackacity
Pitch Hackacity
 
GDPR - General Data Protection Regulation
GDPR - General Data Protection RegulationGDPR - General Data Protection Regulation
GDPR - General Data Protection Regulation
 
I.A. A Evolução
I.A. A EvoluçãoI.A. A Evolução
I.A. A Evolução
 
Economia Criativa e o Mercado de TI v2
Economia Criativa e o Mercado de TI v2Economia Criativa e o Mercado de TI v2
Economia Criativa e o Mercado de TI v2
 
Palestra MVP - Estudo de Casos
Palestra MVP - Estudo de CasosPalestra MVP - Estudo de Casos
Palestra MVP - Estudo de Casos
 
Palestra MVP living lab ms
Palestra MVP   living lab msPalestra MVP   living lab ms
Palestra MVP living lab ms
 
Economia Criativa e o Mercado de TI
Economia Criativa e o Mercado de TIEconomia Criativa e o Mercado de TI
Economia Criativa e o Mercado de TI
 
WordPress: do Blog ao E-Commerce - PHPMS Conf'14
WordPress: do Blog ao E-Commerce - PHPMS Conf'14WordPress: do Blog ao E-Commerce - PHPMS Conf'14
WordPress: do Blog ao E-Commerce - PHPMS Conf'14
 
Your code sucks, let's fix it! Objects Calisthenics
Your code sucks, let's fix it! Objects CalisthenicsYour code sucks, let's fix it! Objects Calisthenics
Your code sucks, let's fix it! Objects Calisthenics
 
Python: a primeira mordida
Python: a primeira mordidaPython: a primeira mordida
Python: a primeira mordida
 

Último

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.docx2m Assessoria
 
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 CalisthenicsDanilo Pinotti
 
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 exemploDanilo Pinotti
 
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.docx2m Assessoria
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfNatalia Granato
 
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.docx2m Assessoria
 

Último (6)

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
 
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
 
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
 
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
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
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
 

Objects calisthenics - Os 10 mandamentos do rei do código